From 19741c3446af6e3f112ac11edc19e0ab350fedd8 Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Mon, 8 Sep 2025 14:36:29 +0300 Subject: [PATCH 1/6] add WarningLevelSummary interface --- dist/index.d.mts | 11 +++++++++-- dist/index.d.ts | 11 +++++++++-- dist/index.global.js | 2 +- dist/index.global.js.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/index.mjs | 2 +- dist/index.mjs.map | 2 +- src/types/entities/Licensee.ts | 10 +++++++++- 9 files changed, 33 insertions(+), 11 deletions(-) diff --git a/dist/index.d.mts b/dist/index.d.mts index 26edde7..b6de828 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts @@ -555,15 +555,22 @@ type LicenseEntity = Entity, LicenseM * @copyright 2017 Labs64 NetLicensing */ +interface WarningLevelSummary { + RED: string[]; + YELLOW: string[]; + GREEN: string[]; +} type LicenseeProps = { active?: boolean; number?: string; name?: string; markedForTransfer?: boolean; productNumber?: string; + aliases?: string[]; readonly inUse?: boolean; + readonly warningLevelSummary?: WarningLevelSummary; } & T; -type SavedLicenseeProps = RequiredProps & LicenseeProps; +type SavedLicenseeProps = RequiredProps & LicenseeProps; interface LicenseeMethods { setActive(active: boolean): void; getActive(def?: D): boolean | D; @@ -1794,4 +1801,4 @@ declare const _default$1: () => ValidationParametersInstance; declare const _default: () => ValidationResultsInstance; -export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; +export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; diff --git a/dist/index.d.ts b/dist/index.d.ts index 26edde7..b6de828 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -555,15 +555,22 @@ type LicenseEntity = Entity, LicenseM * @copyright 2017 Labs64 NetLicensing */ +interface WarningLevelSummary { + RED: string[]; + YELLOW: string[]; + GREEN: string[]; +} type LicenseeProps = { active?: boolean; number?: string; name?: string; markedForTransfer?: boolean; productNumber?: string; + aliases?: string[]; readonly inUse?: boolean; + readonly warningLevelSummary?: WarningLevelSummary; } & T; -type SavedLicenseeProps = RequiredProps & LicenseeProps; +type SavedLicenseeProps = RequiredProps & LicenseeProps; interface LicenseeMethods { setActive(active: boolean): void; getActive(def?: D): boolean | D; @@ -1794,4 +1801,4 @@ declare const _default$1: () => ValidationParametersInstance; declare const _default: () => ValidationResultsInstance; -export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; +export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; diff --git a/dist/index.global.js b/dist/index.global.js index b7b137c..d3099bb 100644 --- a/dist/index.global.js +++ b/dist/index.global.js @@ -3,5 +3,5 @@ `)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){let t=new this(e);return o.forEach(r=>t.set(r)),t}static accessor(e){let t=(this[Xn]=this[Xn]={accessors:{}}).accessors,r=this.prototype;function s(i){let a=Ne(i);t[a]||(Ts(r,i),t[a]=!0)}return c.isArray(e)?e.forEach(s):s(e),this}};ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);c.reduceDescriptors(ue.prototype,({value:n},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(t){this[o]=t}}});c.freezeMethods(ue);var M=ue;function Re(n,e){let o=this||ce,t=e||o,r=M.from(t.headers),s=t.data;return c.forEach(n,function(a){s=a.call(o,s,r.normalize(),e?e.status:void 0)}),r.normalize(),s}function xe(n){return!!(n&&n.__CANCEL__)}function Qn(n,e,o){y.call(this,n??"canceled",y.ERR_CANCELED,e,o),this.name="CanceledError"}c.inherits(Qn,y,{__CANCEL__:!0});var q=Qn;function Ie(n,e,o){let t=o.config.validateStatus;!o.status||!t||t(o.status)?n(o):e(new y("Request failed with status code "+o.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}function $t(n){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function gs(n,e){n=n||10;let o=new Array(n),t=new Array(n),r=0,s=0,i;return e=e!==void 0?e:1e3,function(p){let u=Date.now(),l=t[s];i||(i=u),o[r]=p,t[r]=u;let T=s,b=0;for(;T!==r;)b+=o[T++],T=T%n;if(r=(r+1)%n,r===s&&(s=(s+1)%n),u-i{o=l,r=null,s&&(clearTimeout(s),s=null),n.apply(null,u)};return[(...u)=>{let l=Date.now(),T=l-o;T>=t?i(u,l):(r=u,s||(s=setTimeout(()=>{s=null,i(r)},t-T)))},()=>r&&i(r)]}var eo=hs;var de=(n,e,o=3)=>{let t=0,r=Zn(50,250);return eo(s=>{let i=s.loaded,a=s.lengthComputable?s.total:void 0,p=i-t,u=r(p),l=i<=a;t=i;let T={loaded:i,total:a,progress:a?i/a:void 0,bytes:p,rate:u||void 0,estimated:u&&a&&l?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};n(T)},o)},zt=(n,e)=>{let o=n!=null;return[t=>e[0]({lengthComputable:o,total:n,loaded:t}),e[1]]},Yt=n=>(...e)=>c.asap(()=>n(...e));var to=C.hasStandardBrowserEnv?((n,e)=>o=>(o=new URL(o,C.origin),n.protocol===o.protocol&&n.host===o.host&&(e||n.port===o.port)))(new URL(C.origin),C.navigator&&/(msie|trident)/i.test(C.navigator.userAgent)):()=>!0;var no=C.hasStandardBrowserEnv?{write(n,e,o,t,r,s){let i=[n+"="+encodeURIComponent(e)];c.isNumber(o)&&i.push("expires="+new Date(o).toGMTString()),c.isString(t)&&i.push("path="+t),c.isString(r)&&i.push("domain="+r),s===!0&&i.push("secure"),document.cookie=i.join("; ")},read(n){let e=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(n){this.write(n,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Kt(n){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function Jt(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function Se(n,e,o){let t=!Kt(e);return n&&(t||o==!1)?Jt(n,e):e}var oo=n=>n instanceof M?{...n}:n;function F(n,e){e=e||{};let o={};function t(u,l,T,b){return c.isPlainObject(u)&&c.isPlainObject(l)?c.merge.call({caseless:b},u,l):c.isPlainObject(l)?c.merge({},l):c.isArray(l)?l.slice():l}function r(u,l,T,b){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u,T,b)}else return t(u,l,T,b)}function s(u,l){if(!c.isUndefined(l))return t(void 0,l)}function i(u,l){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u)}else return t(void 0,l)}function a(u,l,T){if(T in e)return t(u,l);if(T in n)return t(void 0,u)}let p={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,l,T)=>r(oo(u),oo(l),T,!0)};return c.forEach(Object.keys(Object.assign({},n,e)),function(l){let T=p[l]||r,b=T(n[l],e[l],l);c.isUndefined(b)&&T!==a||(o[l]=b)}),o}var it=n=>{let e=F({},n),{data:o,withXSRFToken:t,xsrfHeaderName:r,xsrfCookieName:s,headers:i,auth:a}=e;e.headers=i=M.from(i),e.url=ve(Se(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let p;if(c.isFormData(o)){if(C.hasStandardBrowserEnv||C.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((p=i.getContentType())!==!1){let[u,...l]=p?p.split(";").map(T=>T.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(C.hasStandardBrowserEnv&&(t&&c.isFunction(t)&&(t=t(e)),t||t!==!1&&to(e.url))){let u=r&&s&&no.read(s);u&&i.set(r,u)}return e};var Ps=typeof XMLHttpRequest<"u",ro=Ps&&function(n){return new Promise(function(o,t){let r=it(n),s=r.data,i=M.from(r.headers).normalize(),{responseType:a,onUploadProgress:p,onDownloadProgress:u}=r,l,T,b,I,g;function D(){I&&I(),g&&g(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let P=new XMLHttpRequest;P.open(r.method.toUpperCase(),r.url,!0),P.timeout=r.timeout;function A(){if(!P)return;let _=M.from("getAllResponseHeaders"in P&&P.getAllResponseHeaders()),U={data:!a||a==="text"||a==="json"?P.responseText:P.response,status:P.status,statusText:P.statusText,headers:_,config:n,request:P};Ie(function(J){o(J),D()},function(J){t(J),D()},U),P=null}"onloadend"in P?P.onloadend=A:P.onreadystatechange=function(){!P||P.readyState!==4||P.status===0&&!(P.responseURL&&P.responseURL.indexOf("file:")===0)||setTimeout(A)},P.onabort=function(){P&&(t(new y("Request aborted",y.ECONNABORTED,n,P)),P=null)},P.onerror=function(){t(new y("Network Error",y.ERR_NETWORK,n,P)),P=null},P.ontimeout=function(){let $=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded",U=r.transitional||ot;r.timeoutErrorMessage&&($=r.timeoutErrorMessage),t(new y($,U.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,n,P)),P=null},s===void 0&&i.setContentType(null),"setRequestHeader"in P&&c.forEach(i.toJSON(),function($,U){P.setRequestHeader(U,$)}),c.isUndefined(r.withCredentials)||(P.withCredentials=!!r.withCredentials),a&&a!=="json"&&(P.responseType=r.responseType),u&&([b,g]=de(u,!0),P.addEventListener("progress",b)),p&&P.upload&&([T,I]=de(p),P.upload.addEventListener("progress",T),P.upload.addEventListener("loadend",I)),(r.cancelToken||r.signal)&&(l=_=>{P&&(t(!_||_.type?new q(null,n,P):_),P.abort(),P=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));let O=$t(r.url);if(O&&C.protocols.indexOf(O)===-1){t(new y("Unsupported protocol "+O+":",y.ERR_BAD_REQUEST,n));return}P.send(s||null)})};var ys=(n,e)=>{let{length:o}=n=n?n.filter(Boolean):[];if(e||o){let t=new AbortController,r,s=function(u){if(!r){r=!0,a();let l=u instanceof Error?u:this.reason;t.abort(l instanceof y?l:new q(l instanceof Error?l.message:l))}},i=e&&setTimeout(()=>{i=null,s(new y(`timeout ${e} of ms exceeded`,y.ETIMEDOUT))},e),a=()=>{n&&(i&&clearTimeout(i),i=null,n.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),n=null)};n.forEach(u=>u.addEventListener("abort",s));let{signal:p}=t;return p.unsubscribe=()=>c.asap(a),p}},so=ys;var Es=function*(n,e){let o=n.byteLength;if(!e||o{let r=Ds(n,e),s=0,i,a=p=>{i||(i=!0,t&&t(p))};return new ReadableStream({async pull(p){try{let{done:u,value:l}=await r.next();if(u){a(),p.close();return}let T=l.byteLength;if(o){let b=s+=T;o(b)}p.enqueue(new Uint8Array(l))}catch(u){throw a(u),u}},cancel(p){return a(p),r.return()}},{highWaterMark:2})};var ct=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ao=ct&&typeof ReadableStream=="function",vs=ct&&(typeof TextEncoder=="function"?(n=>e=>n.encode(e))(new TextEncoder):async n=>new Uint8Array(await new Response(n).arrayBuffer())),co=(n,...e)=>{try{return!!n(...e)}catch{return!1}},Ns=ao&&co(()=>{let n=!1,e=new Request(C.origin,{body:new ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type");return n&&!e}),io=64*1024,Wt=ao&&co(()=>c.isReadableStream(new Response("").body)),at={stream:Wt&&(n=>n.body)};ct&&(n=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!at[e]&&(at[e]=c.isFunction(n[e])?o=>o[e]():(o,t)=>{throw new y(`Response type '${e}' is not supported`,y.ERR_NOT_SUPPORT,t)})})})(new Response);var Rs=async n=>{if(n==null)return 0;if(c.isBlob(n))return n.size;if(c.isSpecCompliantForm(n))return(await new Request(C.origin,{method:"POST",body:n}).arrayBuffer()).byteLength;if(c.isArrayBufferView(n)||c.isArrayBuffer(n))return n.byteLength;if(c.isURLSearchParams(n)&&(n=n+""),c.isString(n))return(await vs(n)).byteLength},xs=async(n,e)=>{let o=c.toFiniteNumber(n.getContentLength());return o??Rs(e)},uo=ct&&(async n=>{let{url:e,method:o,data:t,signal:r,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:p,responseType:u,headers:l,withCredentials:T="same-origin",fetchOptions:b}=it(n);u=u?(u+"").toLowerCase():"text";let I=so([r,s&&s.toAbortSignal()],i),g,D=I&&I.unsubscribe&&(()=>{I.unsubscribe()}),P;try{if(p&&Ns&&o!=="get"&&o!=="head"&&(P=await xs(l,t))!==0){let U=new Request(e,{method:"POST",body:t,duplex:"half"}),Y;if(c.isFormData(t)&&(Y=U.headers.get("content-type"))&&l.setContentType(Y),U.body){let[J,je]=zt(P,de(Yt(p)));t=Gt(U.body,io,J,je)}}c.isString(T)||(T=T?"include":"omit");let A="credentials"in Request.prototype;g=new Request(e,{...b,signal:I,method:o.toUpperCase(),headers:l.normalize().toJSON(),body:t,duplex:"half",credentials:A?T:void 0});let O=await fetch(g),_=Wt&&(u==="stream"||u==="response");if(Wt&&(a||_&&D)){let U={};["status","statusText","headers"].forEach(gn=>{U[gn]=O[gn]});let Y=c.toFiniteNumber(O.headers.get("content-length")),[J,je]=a&&zt(Y,de(Yt(a),!0))||[];O=new Response(Gt(O.body,io,J,()=>{je&&je(),D&&D()}),U)}u=u||"text";let $=await at[c.findKey(at,u)||"text"](O,n);return!_&&D&&D(),await new Promise((U,Y)=>{Ie(U,Y,{data:$,headers:M.from(O.headers),status:O.status,statusText:O.statusText,config:n,request:g})})}catch(A){throw D&&D(),A&&A.name==="TypeError"&&/Load failed|fetch/i.test(A.message)?Object.assign(new y("Network Error",y.ERR_NETWORK,n,g),{cause:A.cause||A}):y.from(A,A&&A.code,n,g)}});var Xt={http:tt,xhr:ro,fetch:uo};c.forEach(Xt,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});var mo=n=>`- ${n}`,Is=n=>c.isFunction(n)||n===null||n===!1,ut={getAdapter:n=>{n=c.isArray(n)?n:[n];let{length:e}=n,o,t,r={};for(let s=0;s`adapter ${a} `+(p===!1?"is not supported by the environment":"is not available in the build")),i=e?s.length>1?`since : `+s.map(mo).join(` `):" "+mo(s[0]):"as no adapter specified";throw new y("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return t},adapters:Xt};function Qt(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new q(null,n)}function dt(n){return Qt(n),n.headers=M.from(n.headers),n.data=Re.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),ut.getAdapter(n.adapter||ce.adapter)(n).then(function(t){return Qt(n),t.data=Re.call(n,n.transformResponse,t),t.headers=M.from(t.headers),t},function(t){return xe(t)||(Qt(n),t&&t.response&&(t.response.data=Re.call(n,n.transformResponse,t.response),t.response.headers=M.from(t.response.headers))),Promise.reject(t)})}var mt="1.9.0";var pt={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{pt[n]=function(t){return typeof t===n||"a"+(e<1?"n ":" ")+n}});var po={};pt.transitional=function(e,o,t){function r(s,i){return"[Axios v"+mt+"] Transitional option '"+s+"'"+i+(t?". "+t:"")}return(s,i,a)=>{if(e===!1)throw new y(r(i," has been removed"+(o?" in "+o:"")),y.ERR_DEPRECATED);return o&&!po[i]&&(po[i]=!0,console.warn(r(i," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(s,i,a):!0}};pt.spelling=function(e){return(o,t)=>(console.warn(`${t} is likely a misspelling of ${e}`),!0)};function Ss(n,e,o){if(typeof n!="object")throw new y("options must be an object",y.ERR_BAD_OPTION_VALUE);let t=Object.keys(n),r=t.length;for(;r-- >0;){let s=t[r],i=e[s];if(i){let a=n[s],p=a===void 0||i(a,s,n);if(p!==!0)throw new y("option "+s+" must be "+p,y.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new y("Unknown option "+s,y.ERR_BAD_OPTION)}}var Le={assertOptions:Ss,validators:pt};var H=Le.validators,me=class{constructor(e){this.defaults=e||{},this.interceptors={request:new kt,response:new kt}}async request(e,o){try{return await this._request(e,o)}catch(t){if(t instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;let s=r.stack?r.stack.replace(/^.+\n/,""):"";try{t.stack?s&&!String(t.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(t.stack+=` -`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=F(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Le.assertOptions(t,{silentJSONParsing:H.transitional(H.boolean),forcedJSONParsing:H.transitional(H.boolean),clarifyTimeoutError:H.transitional(H.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Le.assertOptions(r,{encode:H.function,serialize:H.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Le.assertOptions(o,{baseUrl:H.spelling("baseURL"),withXsrfToken:H.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],g=>{delete s[g]}),o.headers=M.concat(i,s);let a=[],p=!0;this.interceptors.request.forEach(function(D){typeof D.runWhen=="function"&&D.runWhen(o)===!1||(p=p&&D.synchronous,a.unshift(D.fulfilled,D.rejected))});let u=[];this.interceptors.response.forEach(function(D){u.push(D.fulfilled,D.rejected)});let l,T=0,b;if(!p){let g=[dt.bind(this),void 0];for(g.unshift.apply(g,a),g.push.apply(g,u),b=g.length,l=Promise.resolve(o);T{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new q(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},lo=Zt;function en(n){return function(o){return n.apply(null,o)}}function tn(n){return c.isObject(n)&&n.isAxiosError===!0}var nn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nn).forEach(([n,e])=>{nn[e]=n});var fo=nn;function To(n){let e=new Ce(n),o=Ee(Ce.prototype.request,e);return c.extend(o,Ce.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return To(F(n,r))},o}var w=To(ce);w.Axios=Ce;w.CanceledError=q;w.CancelToken=lo;w.isCancel=xe;w.VERSION=mt;w.toFormData=K;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(e){return Promise.all(e)};w.spread=en;w.isAxiosError=tn;w.mergeConfig=F;w.AxiosHeaders=M;w.formToJSON=n=>rt(c.isHTMLForm(n)?new FormData(n):n);w.getAdapter=ut.getAdapter;w.HttpStatusCode=fo;w.default=w;var lt=w;var{Axios:yd,AxiosError:go,CanceledError:Ed,isCancel:Dd,CancelToken:bd,VERSION:vd,all:Nd,Cancel:Rd,isAxiosError:xd,spread:Id,toFormData:Sd,AxiosHeaders:Ld,HttpStatusCode:Cd,formToJSON:Ad,getAdapter:wd,mergeConfig:Od}=lt;var j=class n extends go{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var ho=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new j('Properties "amountFix" and "amountPercent" cannot be used at the same time');return R(e,{setTotalPrice(t){m(e,"totalPrice",t)},getTotalPrice(t){return d(e,"totalPrice",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setAmountFix(t){m(e,"amountFix",t)},getAmountFix(t){return d(e,"amountFix",t)},setAmountPercent(t){m(e,"amountPercent",t)},getAmountPercent(t){return d(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},ho,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},ft=ho;var ee=n=>{let e=N(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>ft(t))),Ge(e)};var Po=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setLicensingModel(t){m(e,"licensingModel",t)},getLicensingModel(t){return d(e,"licensingModel",t)},setMaxCheckoutValidity(t){m(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return d(e,"maxCheckoutValidity",t)},setYellowThreshold(t){m(e,"yellowThreshold",t)},getYellowThreshold(t){return d(e,"yellowThreshold",t)},setRedThreshold(t){m(e,"redThreshold",t)},getRedThreshold(t){return d(e,"redThreshold",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},serialize(){return L(e,{ignore:["inUse"]})}},Po)},Tt=Po;var te=n=>Tt(N(n));var yo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setExpirationTime(t){m(e,"expirationTime",t)},getExpirationTime(t){return d(e,"expirationTime",t)},setTokenType(t){m(e,"tokenType",t)},getTokenType(t){return d(e,"tokenType",t)},setLicenseeNumber(t){m(e,"licenseeNumber",t)},getLicenseeNumber(t){return d(e,"licenseeNumber",t)},setAction(t){m(e,"action",t)},getAction(t){return d(e,"action",t)},setApiKeyRole(t){m(e,"apiKeyRole",t)},getApiKeyRole(t){return d(e,"apiKeyRole",t)},setBundleNumber(t){m(e,"bundleNumber",t)},getBundleNumber(t){return d(e,"bundleNumber",t)},setBundlePrice(t){m(e,"bundlePrice",t)},getBundlePrice(t){return d(e,"bundlePrice",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},setPredefinedShoppingItem(t){m(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return d(e,"predefinedShoppingItem",t)},setSuccessURL(t){m(e,"successURL",t)},getSuccessURL(t){return d(e,"successURL",t)},setSuccessURLTitle(t){m(e,"successURLTitle",t)},getSuccessURLTitle(t){return d(e,"successURLTitle",t)},setCancelURL(t){m(e,"cancelURL",t)},getCancelURL(t){return d(e,"cancelURL",t)},setCancelURLTitle(t){m(e,"cancelURLTitle",t)},getCancelURLTitle(t){return d(e,"cancelURLTitle",t)},getShopURL(t){return d(e,"shopURL",t)},serialize(){return L(e,{ignore:["shopURL"]})}},yo)},gt=yo;var pe=n=>{let e=N(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),gt(e)};var on=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},ht=(n,e)=>new on(n,e);var Eo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setStatus(t){m(e,"status",t)},getStatus(t){return d(e,"status",t)},setSource(t){m(e,"source",t)},getSource(t){return d(e,"source",t)},setGrandTotal(t){m(e,"grandTotal",t)},getGrandTotal(t){return d(e,"grandTotal",t)},setDiscount(t){m(e,"discount",t)},getDiscount(t){return d(e,"discount",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setDateCreated(t){m(e,"dateCreated",t)},getDateCreated(t){return d(e,"dateCreated",t)},setDateClosed(t){m(e,"dateClosed",t)},getDateClosed(t){return d(e,"dateClosed",t)},setPaymentMethod(t){m(e,"paymentMethod",t)},getPaymentMethod(t){return d(e,"paymentMethod",t)},setLicenseTransactionJoins(t){m(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return d(e,"licenseTransactionJoins",t)},serialize(){return L(e,{ignore:["licenseTransactionJoins","inUse"]})}},Eo)},Ae=Eo;var ne=n=>{let e=N(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Ae({number:s}),p=re({number:i});return ht(a,p)})),Ae(e)};var Do=lt.create(),bo=null,vo=[],No=n=>{Do=n},Pt=()=>Do,rn=n=>{bo=n},Ro=()=>bo,sn=n=>{vo=n},xo=()=>vo;var an={name:"netlicensing-client",version:"1.2.39",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var yt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var le=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${an.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(p,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?yt(p):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${an.version}`),p)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case V.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new j('Missing parameter "username"');if(!n.getPassword())throw new j('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case V.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new j('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case V.ANONYMOUS_IDENTIFICATION:break;default:throw new j("Unknown security mode")}let a=r?.axiosInstance||Pt();try{let p=await a(i),u=p.data.infos?.info||[];if(rn(p),sn(u),r?.onResponse&&r.onResponse(p),u.length>0){r?.onInfo&&r.onInfo(u);let l=u.find(({type:T})=>T==="ERROR");if(l)throw new j(l.value,l.id,p.config,p.request,p)}return p}catch(p){let u=p,l=u.response,T=l?.data?.infos?.info||[];if(rn(l||null),sn(T),p.isAxiosError){let b=p.message;if(l?.data&&T.length>0){let I=T.find(({type:g})=>g==="ERROR");I&&(b=I.value)}throw new j(b,u.code,u.config,u.request,u.response)}throw p}};var Io=(n,e,o,t)=>le(n,"get",e,o,t),So=(n,e,o,t)=>le(n,"post",e,o,t),Lo=(n,e,o,t)=>le(n,"delete",e,o,t);var Cs={setAxiosInstance(n){No(n)},getAxiosInstance(){return Pt()},getLastHttpRequestInfo(){return Ro()},getInfo(){return xo()},get(n,e,o,t){return Io(n,e,o,t)},post(n,e,o,t){return So(n,e,o,t)},delete(n,e,o,t){return Lo(n,e,o,t)},request(n,e,o,t,r){return le(n,e,o,t,r)},toQueryString(n){return yt(n)}},f=Cs;var Co=";",Ao="=",S=n=>Object.keys(n).map(e=>`${e}${Ao}${String(n[e])}`).join(Co),wo=n=>{let e={};return n.split(Co).forEach(o=>{let[t,r]=o.split(Ao);e[t]=r}),e};var cn=n=>typeof n<"u"&&typeof n!="function",we=n=>cn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,v=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!we(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},E=(n,e)=>{if(v(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var Oo=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,p,u){return Object.hasOwn(i,p)?i[p]:Reflect.get(a,p,u)},set(a,p,u,l){return Reflect.set(a,p,u,l)},getPrototypeOf(){return Oo.prototype||null}})},x=Oo;var fe=h.Bundle.ENDPOINT_PATH,As=h.Bundle.ENDPOINT_OBTAIN_PATH,Et=h.Bundle.TYPE,ws={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${fe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Et);return G(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,fe,t,o)).data.items,i=s?.item.filter(a=>a.type===Et).map(a=>G(a));return x(i||[],s)},async create(n,e,o){v(e,"bundle");let r=(await f.post(n,fe,e.serialize(),o)).data.items?.item.find(s=>s.type===Et);return G(r)},async update(n,e,o,t){E(e,"number"),v(o,"bundle");let s=(await f.post(n,`${fe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Et);return G(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${fe}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){E(e,"number"),E(o,"licenseeNumber");let r={[h.Licensee.LICENSEE_NUMBER]:o};return(await f.post(n,`${fe}/${e}/${As}`,r,t)).data.items?.item.filter(p=>p.type===h.License.TYPE)?.map(p=>z(p))||[]}},Mo=ws;var un=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!we(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Dt=()=>new un;var oe=h.Licensee.ENDPOINT_PATH,Os=h.Licensee.ENDPOINT_PATH_VALIDATE,Ms=h.Licensee.ENDPOINT_PATH_TRANSFER,bt=h.Licensee.TYPE,_s={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===bt);return W(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,oe,t,o)).data.items,i=s?.item.filter(a=>a.type===bt).map(a=>W(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,oe,r,t)).data.items?.item.find(a=>a.type===bt);return W(i)},async update(n,e,o,t){E(e,"number"),v(o,"licensee");let s=(await f.post(n,`${oe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bt);return W(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${oe}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){E(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let l=o.licenseeProperties;Object.keys(l).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let T=o.getParameters();Object.keys(T).forEach((b,I)=>{r[`${h.ProductModule.PRODUCT_MODULE_NUMBER}${I}`]=b;let g=T[b];g&&Object.keys(g).forEach(D=>{r[D+I]=g[D]})})}let s=await f.post(n,`${oe}/${e}/${Os}`,r,t),i=Dt(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===h.Validation.TYPE)?.forEach(u=>{i.setValidation(N(u))}),i},transfer(n,e,o,t){E(e,"number"),E(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return f.post(n,`${oe}/${e}/${Ms}`,r,t)}},_o=_s;var Oe=h.License.ENDPOINT_PATH,vt=h.License.TYPE,Us={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===vt);return z(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Oe,t,o)).data.items,i=s?.item.filter(a=>a.type===vt).map(a=>z(a));return x(i||[],s)},async create(n,e,o,t,r,s){v(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let p=(await f.post(n,Oe,i,s)).data.items?.item.find(u=>u.type===vt);return z(p)},async update(n,e,o,t,r){E(e,"number"),v(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await f.post(n,`${Oe}/${e}`,s,r)).data.items?.item.find(p=>p.type===vt);return z(a)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Oe}/${e}`,{forceCascade:!!o},t)}},Uo=Us;var Me=h.LicenseTemplate.ENDPOINT_PATH,Nt=h.LicenseTemplate.TYPE,ks={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Me}/${e}`,{},o)).data.items?.item.find(s=>s.type===Nt);return X(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Me,t,o)).data.items,i=s?.item.filter(a=>a.type===Nt).map(a=>X(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await f.post(n,Me,r,t)).data.items?.item.find(a=>a.type===Nt);return X(i)},async update(n,e,o,t){E(e,"number"),v(o,"licenseTemplate");let s=(await f.post(n,`${Me}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Nt);return X(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Me}/${e}`,{forceCascade:!!o},t)}},ko=ks;var _e=h.Notification.ENDPOINT_PATH,Rt=h.Notification.TYPE,js={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,_e,t,o)).data.items,i=s?.item.filter(a=>a.type===Rt).map(a=>Q(a));return x(i||[],s)},async create(n,e,o){v(e,"notification");let r=(await f.post(n,_e,e.serialize(),o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async update(n,e,o,t){E(e,"number"),v(o,"notification");let s=(await f.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Rt);return Q(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${_e}/${e}`,{forceCascade:!!o},t)}},jo=js;var dn=h.PaymentMethod.ENDPOINT_PATH,mn=h.PaymentMethod.TYPE,Bs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===mn);return se(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,dn,t,o)).data.items,i=s?.item.filter(a=>a.type===mn).map(a=>se(a));return x(i||[],s)},async update(n,e,o,t){E(e,"number"),v(o,"paymentMethod");let s=(await f.post(n,`${dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===mn);return se(s)}},Bo=Bs;var Ue=h.ProductModule.ENDPOINT_PATH,xt=h.ProductModule.TYPE,Fs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===xt);return te(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Ue,t,o)).data.items,i=s?.item.filter(a=>a.type===xt).map(a=>te(a));return x(i||[],s)},async create(n,e,o,t){v(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,Ue,r,t)).data.items?.item.find(a=>a.type===xt);return te(i)},async update(n,e,o,t){E(e,"number"),v(o,"productModule");let s=(await f.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===xt);return te(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Ue}/${e}`,{forceCascade:!!o},t)}},Fo=Fs;var ke=h.Product.ENDPOINT_PATH,It=h.Product.TYPE,Vs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${ke}/${e}`,{},o)).data.items?.item.find(s=>s.type===It);return ee(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,ke,t,o)).data.items,i=s?.item.filter(a=>a.type===It).map(a=>ee(a));return x(i||[],s)},async create(n,e,o){v(e,"product");let r=(await f.post(n,ke,e.serialize(),o)).data.items?.item.find(s=>s.type===It);return ee(r)},async update(n,e,o,t){E(e,"number"),v(o,"product");let s=(await f.post(n,`${ke}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===It);return ee(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${ke}/${e}`,{forceCascade:!!o},t)}},Vo=Vs;var St=h.Token.ENDPOINT_PATH,pn=h.Token.TYPE,qs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${St}/${e}`,{},o)).data.items?.item.find(s=>s.type===pn);return pe(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,St,t,o)).data.items,i=s?.item.filter(a=>a.type===pn).map(a=>pe(a));return x(i||[],s)},async create(n,e,o){v(e,"token");let r=(await f.post(n,St,e.serialize(),o)).data.items?.item.find(s=>s.type===pn);return pe(r)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${St}/${e}`,{forceCascade:!!o},t)}},qo=qs;var Lt=h.Transaction.ENDPOINT_PATH,Ct=h.Transaction.TYPE,Hs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Lt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Lt,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>ne(a));return x(i||[],s)},async create(n,e,o){v(e,"transaction");let r=(await f.post(n,Lt,e.serialize(),o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async update(n,e,o,t){E(e,"number"),v(o,"transaction");let s=(await f.post(n,`${Lt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return ne(s)}},Ho=Hs;var ln=h.Utility.ENDPOINT_PATH,$s={async listLicenseTypes(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listLicensingModels(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let r=`${ln}/${h.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await f.get(n,r,t,o)).data.items,a=h.Utility.COUNTRY_TYPE,p=i?.item.filter(u=>u.type===a).map(u=>$e(u));return x(p||[],i)}},$o=$s;var fn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||V.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},zo=n=>new fn(n);var Tn=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Yo=()=>new Tn;return Xo(zs);})(); +`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=F(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Le.assertOptions(t,{silentJSONParsing:H.transitional(H.boolean),forcedJSONParsing:H.transitional(H.boolean),clarifyTimeoutError:H.transitional(H.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Le.assertOptions(r,{encode:H.function,serialize:H.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Le.assertOptions(o,{baseUrl:H.spelling("baseURL"),withXsrfToken:H.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],g=>{delete s[g]}),o.headers=M.concat(i,s);let a=[],p=!0;this.interceptors.request.forEach(function(D){typeof D.runWhen=="function"&&D.runWhen(o)===!1||(p=p&&D.synchronous,a.unshift(D.fulfilled,D.rejected))});let u=[];this.interceptors.response.forEach(function(D){u.push(D.fulfilled,D.rejected)});let l,T=0,b;if(!p){let g=[dt.bind(this),void 0];for(g.unshift.apply(g,a),g.push.apply(g,u),b=g.length,l=Promise.resolve(o);T{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new q(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},lo=Zt;function en(n){return function(o){return n.apply(null,o)}}function tn(n){return c.isObject(n)&&n.isAxiosError===!0}var nn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nn).forEach(([n,e])=>{nn[e]=n});var fo=nn;function To(n){let e=new Ce(n),o=Ee(Ce.prototype.request,e);return c.extend(o,Ce.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return To(F(n,r))},o}var w=To(ce);w.Axios=Ce;w.CanceledError=q;w.CancelToken=lo;w.isCancel=xe;w.VERSION=mt;w.toFormData=K;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(e){return Promise.all(e)};w.spread=en;w.isAxiosError=tn;w.mergeConfig=F;w.AxiosHeaders=M;w.formToJSON=n=>rt(c.isHTMLForm(n)?new FormData(n):n);w.getAdapter=ut.getAdapter;w.HttpStatusCode=fo;w.default=w;var lt=w;var{Axios:yd,AxiosError:go,CanceledError:Ed,isCancel:Dd,CancelToken:bd,VERSION:vd,all:Nd,Cancel:Rd,isAxiosError:xd,spread:Id,toFormData:Sd,AxiosHeaders:Ld,HttpStatusCode:Cd,formToJSON:Ad,getAdapter:wd,mergeConfig:Od}=lt;var j=class n extends go{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var ho=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new j('Properties "amountFix" and "amountPercent" cannot be used at the same time');return R(e,{setTotalPrice(t){m(e,"totalPrice",t)},getTotalPrice(t){return d(e,"totalPrice",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setAmountFix(t){m(e,"amountFix",t)},getAmountFix(t){return d(e,"amountFix",t)},setAmountPercent(t){m(e,"amountPercent",t)},getAmountPercent(t){return d(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},ho,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},ft=ho;var ee=n=>{let e=N(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>ft(t))),Ge(e)};var Po=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setLicensingModel(t){m(e,"licensingModel",t)},getLicensingModel(t){return d(e,"licensingModel",t)},setMaxCheckoutValidity(t){m(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return d(e,"maxCheckoutValidity",t)},setYellowThreshold(t){m(e,"yellowThreshold",t)},getYellowThreshold(t){return d(e,"yellowThreshold",t)},setRedThreshold(t){m(e,"redThreshold",t)},getRedThreshold(t){return d(e,"redThreshold",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},serialize(){return L(e,{ignore:["inUse"]})}},Po)},Tt=Po;var te=n=>Tt(N(n));var yo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setExpirationTime(t){m(e,"expirationTime",t)},getExpirationTime(t){return d(e,"expirationTime",t)},setTokenType(t){m(e,"tokenType",t)},getTokenType(t){return d(e,"tokenType",t)},setLicenseeNumber(t){m(e,"licenseeNumber",t)},getLicenseeNumber(t){return d(e,"licenseeNumber",t)},setAction(t){m(e,"action",t)},getAction(t){return d(e,"action",t)},setApiKeyRole(t){m(e,"apiKeyRole",t)},getApiKeyRole(t){return d(e,"apiKeyRole",t)},setBundleNumber(t){m(e,"bundleNumber",t)},getBundleNumber(t){return d(e,"bundleNumber",t)},setBundlePrice(t){m(e,"bundlePrice",t)},getBundlePrice(t){return d(e,"bundlePrice",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},setPredefinedShoppingItem(t){m(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return d(e,"predefinedShoppingItem",t)},setSuccessURL(t){m(e,"successURL",t)},getSuccessURL(t){return d(e,"successURL",t)},setSuccessURLTitle(t){m(e,"successURLTitle",t)},getSuccessURLTitle(t){return d(e,"successURLTitle",t)},setCancelURL(t){m(e,"cancelURL",t)},getCancelURL(t){return d(e,"cancelURL",t)},setCancelURLTitle(t){m(e,"cancelURLTitle",t)},getCancelURLTitle(t){return d(e,"cancelURLTitle",t)},getShopURL(t){return d(e,"shopURL",t)},serialize(){return L(e,{ignore:["shopURL"]})}},yo)},gt=yo;var pe=n=>{let e=N(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),gt(e)};var on=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},ht=(n,e)=>new on(n,e);var Eo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setStatus(t){m(e,"status",t)},getStatus(t){return d(e,"status",t)},setSource(t){m(e,"source",t)},getSource(t){return d(e,"source",t)},setGrandTotal(t){m(e,"grandTotal",t)},getGrandTotal(t){return d(e,"grandTotal",t)},setDiscount(t){m(e,"discount",t)},getDiscount(t){return d(e,"discount",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setDateCreated(t){m(e,"dateCreated",t)},getDateCreated(t){return d(e,"dateCreated",t)},setDateClosed(t){m(e,"dateClosed",t)},getDateClosed(t){return d(e,"dateClosed",t)},setPaymentMethod(t){m(e,"paymentMethod",t)},getPaymentMethod(t){return d(e,"paymentMethod",t)},setLicenseTransactionJoins(t){m(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return d(e,"licenseTransactionJoins",t)},serialize(){return L(e,{ignore:["licenseTransactionJoins","inUse"]})}},Eo)},Ae=Eo;var ne=n=>{let e=N(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Ae({number:s}),p=re({number:i});return ht(a,p)})),Ae(e)};var Do=lt.create(),bo=null,vo=[],No=n=>{Do=n},Pt=()=>Do,rn=n=>{bo=n},Ro=()=>bo,sn=n=>{vo=n},xo=()=>vo;var an={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var yt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var le=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${an.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(p,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?yt(p):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${an.version}`),p)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case V.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new j('Missing parameter "username"');if(!n.getPassword())throw new j('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case V.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new j('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case V.ANONYMOUS_IDENTIFICATION:break;default:throw new j("Unknown security mode")}let a=r?.axiosInstance||Pt();try{let p=await a(i),u=p.data.infos?.info||[];if(rn(p),sn(u),r?.onResponse&&r.onResponse(p),u.length>0){r?.onInfo&&r.onInfo(u);let l=u.find(({type:T})=>T==="ERROR");if(l)throw new j(l.value,l.id,p.config,p.request,p)}return p}catch(p){let u=p,l=u.response,T=l?.data?.infos?.info||[];if(rn(l||null),sn(T),p.isAxiosError){let b=p.message;if(l?.data&&T.length>0){let I=T.find(({type:g})=>g==="ERROR");I&&(b=I.value)}throw new j(b,u.code,u.config,u.request,u.response)}throw p}};var Io=(n,e,o,t)=>le(n,"get",e,o,t),So=(n,e,o,t)=>le(n,"post",e,o,t),Lo=(n,e,o,t)=>le(n,"delete",e,o,t);var Cs={setAxiosInstance(n){No(n)},getAxiosInstance(){return Pt()},getLastHttpRequestInfo(){return Ro()},getInfo(){return xo()},get(n,e,o,t){return Io(n,e,o,t)},post(n,e,o,t){return So(n,e,o,t)},delete(n,e,o,t){return Lo(n,e,o,t)},request(n,e,o,t,r){return le(n,e,o,t,r)},toQueryString(n){return yt(n)}},f=Cs;var Co=";",Ao="=",S=n=>Object.keys(n).map(e=>`${e}${Ao}${String(n[e])}`).join(Co),wo=n=>{let e={};return n.split(Co).forEach(o=>{let[t,r]=o.split(Ao);e[t]=r}),e};var cn=n=>typeof n<"u"&&typeof n!="function",we=n=>cn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,v=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!we(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},E=(n,e)=>{if(v(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var Oo=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,p,u){return Object.hasOwn(i,p)?i[p]:Reflect.get(a,p,u)},set(a,p,u,l){return Reflect.set(a,p,u,l)},getPrototypeOf(){return Oo.prototype||null}})},x=Oo;var fe=h.Bundle.ENDPOINT_PATH,As=h.Bundle.ENDPOINT_OBTAIN_PATH,Et=h.Bundle.TYPE,ws={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${fe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Et);return G(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,fe,t,o)).data.items,i=s?.item.filter(a=>a.type===Et).map(a=>G(a));return x(i||[],s)},async create(n,e,o){v(e,"bundle");let r=(await f.post(n,fe,e.serialize(),o)).data.items?.item.find(s=>s.type===Et);return G(r)},async update(n,e,o,t){E(e,"number"),v(o,"bundle");let s=(await f.post(n,`${fe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Et);return G(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${fe}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){E(e,"number"),E(o,"licenseeNumber");let r={[h.Licensee.LICENSEE_NUMBER]:o};return(await f.post(n,`${fe}/${e}/${As}`,r,t)).data.items?.item.filter(p=>p.type===h.License.TYPE)?.map(p=>z(p))||[]}},Mo=ws;var un=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!we(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Dt=()=>new un;var oe=h.Licensee.ENDPOINT_PATH,Os=h.Licensee.ENDPOINT_PATH_VALIDATE,Ms=h.Licensee.ENDPOINT_PATH_TRANSFER,bt=h.Licensee.TYPE,_s={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===bt);return W(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,oe,t,o)).data.items,i=s?.item.filter(a=>a.type===bt).map(a=>W(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,oe,r,t)).data.items?.item.find(a=>a.type===bt);return W(i)},async update(n,e,o,t){E(e,"number"),v(o,"licensee");let s=(await f.post(n,`${oe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bt);return W(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${oe}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){E(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let l=o.licenseeProperties;Object.keys(l).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let T=o.getParameters();Object.keys(T).forEach((b,I)=>{r[`${h.ProductModule.PRODUCT_MODULE_NUMBER}${I}`]=b;let g=T[b];g&&Object.keys(g).forEach(D=>{r[D+I]=g[D]})})}let s=await f.post(n,`${oe}/${e}/${Os}`,r,t),i=Dt(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===h.Validation.TYPE)?.forEach(u=>{i.setValidation(N(u))}),i},transfer(n,e,o,t){E(e,"number"),E(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return f.post(n,`${oe}/${e}/${Ms}`,r,t)}},_o=_s;var Oe=h.License.ENDPOINT_PATH,vt=h.License.TYPE,Us={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===vt);return z(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Oe,t,o)).data.items,i=s?.item.filter(a=>a.type===vt).map(a=>z(a));return x(i||[],s)},async create(n,e,o,t,r,s){v(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let p=(await f.post(n,Oe,i,s)).data.items?.item.find(u=>u.type===vt);return z(p)},async update(n,e,o,t,r){E(e,"number"),v(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await f.post(n,`${Oe}/${e}`,s,r)).data.items?.item.find(p=>p.type===vt);return z(a)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Oe}/${e}`,{forceCascade:!!o},t)}},Uo=Us;var Me=h.LicenseTemplate.ENDPOINT_PATH,Nt=h.LicenseTemplate.TYPE,ks={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Me}/${e}`,{},o)).data.items?.item.find(s=>s.type===Nt);return X(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Me,t,o)).data.items,i=s?.item.filter(a=>a.type===Nt).map(a=>X(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await f.post(n,Me,r,t)).data.items?.item.find(a=>a.type===Nt);return X(i)},async update(n,e,o,t){E(e,"number"),v(o,"licenseTemplate");let s=(await f.post(n,`${Me}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Nt);return X(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Me}/${e}`,{forceCascade:!!o},t)}},ko=ks;var _e=h.Notification.ENDPOINT_PATH,Rt=h.Notification.TYPE,js={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,_e,t,o)).data.items,i=s?.item.filter(a=>a.type===Rt).map(a=>Q(a));return x(i||[],s)},async create(n,e,o){v(e,"notification");let r=(await f.post(n,_e,e.serialize(),o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async update(n,e,o,t){E(e,"number"),v(o,"notification");let s=(await f.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Rt);return Q(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${_e}/${e}`,{forceCascade:!!o},t)}},jo=js;var dn=h.PaymentMethod.ENDPOINT_PATH,mn=h.PaymentMethod.TYPE,Bs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===mn);return se(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,dn,t,o)).data.items,i=s?.item.filter(a=>a.type===mn).map(a=>se(a));return x(i||[],s)},async update(n,e,o,t){E(e,"number"),v(o,"paymentMethod");let s=(await f.post(n,`${dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===mn);return se(s)}},Bo=Bs;var Ue=h.ProductModule.ENDPOINT_PATH,xt=h.ProductModule.TYPE,Fs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===xt);return te(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Ue,t,o)).data.items,i=s?.item.filter(a=>a.type===xt).map(a=>te(a));return x(i||[],s)},async create(n,e,o,t){v(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,Ue,r,t)).data.items?.item.find(a=>a.type===xt);return te(i)},async update(n,e,o,t){E(e,"number"),v(o,"productModule");let s=(await f.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===xt);return te(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Ue}/${e}`,{forceCascade:!!o},t)}},Fo=Fs;var ke=h.Product.ENDPOINT_PATH,It=h.Product.TYPE,Vs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${ke}/${e}`,{},o)).data.items?.item.find(s=>s.type===It);return ee(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,ke,t,o)).data.items,i=s?.item.filter(a=>a.type===It).map(a=>ee(a));return x(i||[],s)},async create(n,e,o){v(e,"product");let r=(await f.post(n,ke,e.serialize(),o)).data.items?.item.find(s=>s.type===It);return ee(r)},async update(n,e,o,t){E(e,"number"),v(o,"product");let s=(await f.post(n,`${ke}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===It);return ee(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${ke}/${e}`,{forceCascade:!!o},t)}},Vo=Vs;var St=h.Token.ENDPOINT_PATH,pn=h.Token.TYPE,qs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${St}/${e}`,{},o)).data.items?.item.find(s=>s.type===pn);return pe(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,St,t,o)).data.items,i=s?.item.filter(a=>a.type===pn).map(a=>pe(a));return x(i||[],s)},async create(n,e,o){v(e,"token");let r=(await f.post(n,St,e.serialize(),o)).data.items?.item.find(s=>s.type===pn);return pe(r)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${St}/${e}`,{forceCascade:!!o},t)}},qo=qs;var Lt=h.Transaction.ENDPOINT_PATH,Ct=h.Transaction.TYPE,Hs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Lt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Lt,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>ne(a));return x(i||[],s)},async create(n,e,o){v(e,"transaction");let r=(await f.post(n,Lt,e.serialize(),o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async update(n,e,o,t){E(e,"number"),v(o,"transaction");let s=(await f.post(n,`${Lt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return ne(s)}},Ho=Hs;var ln=h.Utility.ENDPOINT_PATH,$s={async listLicenseTypes(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listLicensingModels(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let r=`${ln}/${h.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await f.get(n,r,t,o)).data.items,a=h.Utility.COUNTRY_TYPE,p=i?.item.filter(u=>u.type===a).map(u=>$e(u));return x(p||[],i)}},$o=$s;var fn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||V.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},zo=n=>new fn(n);var Tn=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Yo=()=>new Tn;return Xo(zs);})(); //# sourceMappingURL=index.global.js.map \ No newline at end of file diff --git a/dist/index.global.js.map b/dist/index.global.js.map index ec6e5fb..cc996fc 100644 --- a/dist/index.global.js.map +++ b/dist/index.global.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\nimport Constants from '@/constants';\nimport ApiKeyRole from '@/constants/ApiKeyRole';\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\nimport LicenseType from '@/constants/LicenseType';\nimport LicensingModel from '@/constants/LicensingModel';\nimport NodeSecretMode from '@/constants/NodeSecretMode';\nimport NotificationEvent from '@/constants/NotificationEvent';\nimport NotificationProtocol from '@/constants/NotificationProtocol';\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\nimport SecurityMode from '@/constants/SecurityMode';\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\nimport TokenType from '@/constants/TokenType';\nimport TransactionSource from '@/constants/TransactionSource';\nimport TransactionStatus from '@/constants/TransactionStatus';\n\n// converters\nimport itemToBundle from '@/converters/itemToBundle';\nimport itemToCountry from '@/converters/itemToCountry';\nimport itemToLicense from '@/converters/itemToLicense';\nimport itemToLicensee from '@/converters/itemToLicensee';\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\nimport itemToNotification from '@/converters/itemToNotification';\nimport itemToObject from '@/converters/itemToObject';\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\nimport itemToProduct from '@/converters/itemToProduct';\nimport itemToProductModule from '@/converters/itemToProductModule';\nimport itemToToken from '@/converters/itemToToken';\nimport itemToTransaction from '@/converters/itemToTransaction';\n\n// entities\nimport Bundle from '@/entities/Bundle';\nimport Country from '@/entities/Country';\nimport defineEntity from '@/entities/defineEntity';\nimport License from '@/entities/License';\nimport Licensee from '@/entities/Licensee';\nimport LicenseTemplate from '@/entities/LicenseTemplate';\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\nimport Notification from '@/entities/Notification';\nimport PaymentMethod from '@/entities/PaymentMethod';\nimport Product from '@/entities/Product';\nimport ProductDiscount from '@/entities/ProductDiscount';\nimport ProductModule from '@/entities/ProductModule';\nimport Token from '@/entities/Token';\nimport Transaction from '@/entities/Transaction';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// services\nimport BundleService from '@/services/BundleService';\nimport LicenseeService from '@/services/LicenseeService';\nimport LicenseService from '@/services/LicenseService';\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\nimport NotificationService from '@/services/NotificationService';\nimport PaymentMethodService from '@/services/PaymentMethodService';\nimport ProductModuleService from '@/services/ProductModuleService';\nimport ProductService from '@/services/ProductService';\nimport Service from '@/services/Service';\nimport TokenService from '@/services/TokenService';\nimport TransactionService from '@/services/TransactionService';\nimport UtilityService from '@/services/UtilityService';\n\n// utils\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\nimport serialize from '@/utils/serialize';\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\n\n// value object\nimport Context from '@/vo/Context';\nimport Page from '@/vo/Page';\nimport ValidationParameters from '@/vo/ValidationParameters';\nimport ValidationResults from '@/vo/ValidationResults';\n\n// types\nexport type * from '@/types';\n\nexport {\n // constants\n Constants,\n ApiKeyRole,\n LicenseeSecretMode,\n LicenseType,\n LicensingModel,\n NodeSecretMode,\n NotificationEvent,\n NotificationProtocol,\n PaymentMethodEnum,\n SecurityMode,\n TimeVolumePeriod,\n TokenType,\n TransactionSource,\n TransactionStatus,\n\n // converters\n itemToBundle,\n itemToCountry,\n itemToLicense,\n itemToLicensee,\n itemToLicenseTemplate,\n itemToNotification,\n itemToObject,\n itemToPaymentMethod,\n itemToProduct,\n itemToProductModule,\n itemToToken,\n itemToTransaction,\n\n // entities\n Bundle,\n Country,\n defineEntity,\n License,\n Licensee,\n LicenseTemplate,\n LicenseTransactionJoin,\n Notification,\n PaymentMethod,\n Product,\n ProductDiscount,\n ProductModule,\n Token,\n Transaction,\n\n // errors\n NlicError,\n\n // services\n BundleService,\n LicenseeService,\n LicenseService,\n LicenseTemplateService,\n NotificationService,\n PaymentMethodService,\n ProductModuleService,\n ProductService,\n Service,\n TokenService,\n TransactionService,\n UtilityService,\n\n // utils\n filterEncode,\n filterDecode,\n serialize,\n isValid,\n isDefined,\n ensureNotNull,\n ensureNotEmpty,\n\n // vo\n Context,\n Page,\n ValidationParameters,\n ValidationResults,\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseeSecretMode = Object.freeze({\n // @deprecated\n DISABLED: 'DISABLED',\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default LicenseeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseType = Object.freeze({\n FEATURE: 'FEATURE',\n TIMEVOLUME: 'TIMEVOLUME',\n FLOATING: 'FLOATING',\n QUANTITY: 'QUANTITY',\n});\n\nexport default LicenseType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationEvent = Object.freeze({\n LICENSEE_CREATED: 'LICENSEE_CREATED',\n LICENSE_CREATED: 'LICENSE_CREATED',\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\n});\n\nexport default NotificationEvent;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationProtocol = Object.freeze({\n WEBHOOK: 'WEBHOOK',\n});\n\nexport default NotificationProtocol;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst SecurityMode = Object.freeze({\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n APIKEY_IDENTIFICATION: 'APIKEY',\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n});\n\nexport default SecurityMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TimeVolumePeriod = Object.freeze({\n DAY: 'DAY',\n WEEK: 'WEEK',\n MONTH: 'MONTH',\n YEAR: 'YEAR',\n});\n\nexport default TimeVolumePeriod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TokenType = Object.freeze({\n DEFAULT: 'DEFAULT',\n SHOP: 'SHOP',\n APIKEY: 'APIKEY',\n ACTION: 'ACTION',\n});\n\nexport default TokenType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionSource = Object.freeze({\n SHOP: 'SHOP',\n\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\n\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\n\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\n\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\n\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\n\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\n\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\n\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\n\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\n\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\n});\n\nexport default TransactionSource;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionStatus = Object.freeze({\n PENDING: 'PENDING',\n CLOSED: 'CLOSED',\n CANCELLED: 'CANCELLED',\n});\n\nexport default TransactionStatus;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\nimport LicenseType from '@/constants/LicenseType';\nimport NotificationEvent from '@/constants/NotificationEvent';\nimport NotificationProtocol from '@/constants/NotificationProtocol';\nimport SecurityMode from '@/constants/SecurityMode';\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\nimport TokenType from '@/constants/TokenType';\nimport TransactionSource from '@/constants/TransactionSource';\nimport TransactionStatus from '@/constants/TransactionStatus';\n\nexport default {\n LicenseeSecretMode,\n LicenseType,\n NotificationEvent,\n NotificationProtocol,\n SecurityMode,\n TimeVolumePeriod,\n TokenType,\n TransactionSource,\n TransactionStatus,\n\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\n APIKEY_IDENTIFICATION: 'APIKEY',\n\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n\n FILTER: 'filter',\n\n Product: {\n TYPE: 'Product',\n ENDPOINT_PATH: 'product',\n },\n\n ProductModule: {\n TYPE: 'ProductModule',\n ENDPOINT_PATH: 'productmodule',\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\n },\n\n Licensee: {\n TYPE: 'Licensee',\n ENDPOINT_PATH: 'licensee',\n ENDPOINT_PATH_VALIDATE: 'validate',\n ENDPOINT_PATH_TRANSFER: 'transfer',\n LICENSEE_NUMBER: 'licenseeNumber',\n },\n\n LicenseTemplate: {\n TYPE: 'LicenseTemplate',\n ENDPOINT_PATH: 'licensetemplate',\n\n // @deprecated use LicenseType directly instead\n LicenseType,\n },\n\n License: {\n TYPE: 'License',\n ENDPOINT_PATH: 'license',\n },\n\n Validation: {\n TYPE: 'ProductModuleValidation',\n },\n\n Token: {\n TYPE: 'Token',\n ENDPOINT_PATH: 'token',\n\n // @deprecated use TokenType directly instead\n Type: TokenType,\n },\n\n PaymentMethod: {\n TYPE: 'PaymentMethod',\n ENDPOINT_PATH: 'paymentmethod',\n },\n\n Bundle: {\n TYPE: 'Bundle',\n ENDPOINT_PATH: 'bundle',\n ENDPOINT_OBTAIN_PATH: 'obtain',\n },\n\n Notification: {\n TYPE: 'Notification',\n ENDPOINT_PATH: 'notification',\n\n // @deprecated use NotificationProtocol directly instead\n Protocol: NotificationProtocol,\n\n // @deprecated use NotificationEvent directly instead\n Event: NotificationEvent,\n },\n\n Transaction: {\n TYPE: 'Transaction',\n ENDPOINT_PATH: 'transaction',\n\n // @deprecated use TransactionStatus directly instead\n Status: TransactionStatus,\n },\n\n Utility: {\n ENDPOINT_PATH: 'utility',\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\n ENDPOINT_PATH_COUNTRIES: 'countries',\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\n LICENSE_TYPE: 'LicenseType',\n COUNTRY_TYPE: 'Country',\n },\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst ApiKeyRole = Object.freeze({\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\n});\n\nexport default ApiKeyRole;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicensingModel = Object.freeze({\n TRY_AND_BUY: 'TryAndBuy',\n SUBSCRIPTION: 'Subscription',\n RENTAL: 'Rental',\n FLOATING: 'Floating',\n MULTI_FEATURE: 'MultiFeature',\n PAY_PER_USE: 'PayPerUse',\n PRICING_TABLE: 'PricingTable',\n QUOTA: 'Quota',\n NODE_LOCKED: 'NodeLocked',\n DISCOUNT: 'Discount',\n});\n\nexport default LicensingModel;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NodeSecretMode = Object.freeze({\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default NodeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst PaymentMethodEnum = Object.freeze({\n NULL: 'NULL',\n PAYPAL: 'PAYPAL',\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\n STRIPE: 'STRIPE',\n STRIPE_TESTING: 'STRIPE_TESTING',\n});\n\nexport default PaymentMethodEnum;\n","import { Item, List } from '@/types/api/response';\n\nconst cast = (value: string): unknown => {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n};\n\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\n const result: Record = {};\n properties?.forEach(({ name, value }) => {\n result[name] = cast(value);\n });\n return result;\n};\n\nconst extractLists = (lists?: List[]) => {\n const result: Record = {};\n\n lists?.forEach((list) => {\n const { name } = list;\n result[name] = result[name] || [];\n result[name].push(itemToObject(list));\n });\n return result;\n};\n\nconst itemToObject = >(item?: Item | List): T => {\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\n};\n\nexport default itemToObject;\n","export const has = (obj: T, key: K): boolean => {\n return Object.hasOwn(obj, key);\n};\n\nexport const set = (obj: T, key: K, value: T[K]): void => {\n obj[key] = value;\n};\n\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\n return has(obj, key) ? obj[key] : (def as D);\n};\n\nexport default {\n has,\n set,\n get,\n};\n","/**\n * Converts an object into a map of type Record, where the value of each object property is converted\n * to a string.\n * If the property's value is `undefined`, it will be replaced with an empty string.\n * If the value is already a string, it will remain unchanged.\n * If the value is Date instance, it wll be replaced with an ISO format date string.\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\n * If serialization fails, the value will be converted to a string using `String()`.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n * @param obj - The object to be converted into a map.\n * @param options\n * @returns A map (Record) with converted property values from the object.\n */\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\n const map: Record = {};\n\n const { ignore = [] } = options;\n\n Object.entries(obj).forEach(([k, v]) => {\n // ignore keys\n if (ignore.includes(k)) {\n return;\n }\n\n if (typeof v === 'function') {\n // ignore functions\n return;\n } else if (v === undefined) {\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\n } else if (typeof v === 'string') {\n map[k] = v; // If the value is already a string, leave it unchanged\n } else if (v instanceof Date) {\n // if the value is Date, convert it to ISO string\n map[k] = v.toISOString();\n } else if (typeof v !== 'object' || v === null) {\n // If it's not an object (or is null), convert it to string\n map[k] = String(v);\n } else {\n // Try to serialize the object or array into JSON\n try {\n map[k] = JSON.stringify(v);\n } catch {\n map[k] = String(v);\n }\n }\n });\n\n return map;\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type {\n Entity,\n EntityMethods,\n Proto,\n PropGetEventListener,\n PropSetEventListener,\n} from '@/types/entities/defineEntity';\n\n// utils\nimport { set, has, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst defineEntity = function

(\n props: T,\n methods: M,\n proto: P = {} as P,\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\n) {\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\n set: [],\n get: [],\n };\n\n if (options?.get) {\n listeners.get.push(options.get);\n }\n\n if (options?.set) {\n listeners.set.push(options.set);\n }\n\n const base: EntityMethods = {\n set(this: void, key, value): void {\n set(props, key, value);\n },\n\n get(this: void, key, def) {\n return get(props, key, def);\n },\n\n has(this: void, key) {\n return has(props, key);\n },\n\n // Aliases\n setProperty(key, value) {\n this.set(key, value);\n },\n\n addProperty(key, value) {\n this.set(key, value);\n },\n\n getProperty(key, def) {\n return this.get(key, def);\n },\n\n hasProperty(key) {\n return this.has(key);\n },\n\n setProperties(properties) {\n Object.entries(properties).forEach(([k, v]) => {\n this.set(k as keyof T, v as T[keyof T]);\n });\n },\n\n serialize(this: void) {\n return serialize(props);\n },\n };\n\n return new Proxy(props, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(methods, prop)) {\n return methods[prop as keyof typeof methods];\n }\n\n if (Object.hasOwn(base, prop)) {\n return base[prop as keyof typeof base];\n }\n\n listeners.get.forEach((l) => {\n l(obj, prop, receiver);\n });\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n listeners.set.forEach((l) => {\n l(obj, prop, value, receiver);\n });\n\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return proto.prototype || null;\n },\n }) as Entity;\n};\n\nexport default defineEntity;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// types\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * NetLicensing Bundle entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the bundle is disabled.\n * @property boolean active\n *\n * Bundle name.\n * @property string name\n *\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the bundle price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * The bundle includes a set of templates, each identified by a unique template number.\n * @property string[] licenseTemplateNumbers\n *\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\n const props: BundleProps = { ...properties };\n\n const methods: BundleMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string) {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\n set(props, 'licenseTemplateNumbers', numbers);\n },\n\n addLicenseTemplateNumber(this: void, number: string): void {\n if (!props.licenseTemplateNumbers) {\n props.licenseTemplateNumbers = [];\n }\n\n props.licenseTemplateNumbers.push(number);\n },\n\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\n },\n\n removeLicenseTemplateNumber(this: void, number: string): void {\n const { licenseTemplateNumbers: numbers = [] } = props;\n\n numbers.splice(numbers.indexOf(number), 1);\n props.licenseTemplateNumbers = numbers;\n },\n\n serialize(this: void): Record {\n if (props.licenseTemplateNumbers) {\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\n return serialize({ ...props, licenseTemplateNumbers });\n }\n\n return serialize(props);\n },\n };\n\n return defineEntity(props as BundleProps, methods, Bundle);\n};\n\nexport default Bundle;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Bundle from '@/entities/Bundle';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { BundleProps } from '@/types/entities/Bundle';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { licenseTemplateNumbers } = props;\n\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\n }\n\n return Bundle(props as BundleProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * Country entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * @property code - Unique code of country.\n * @property name - Unique name of country\n * @property vatPercent - Country vat.\n * @property isEu - is country in EU.\n */\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\n const defaults: CountryProps = {\n code: '',\n name: '',\n vatPercent: 0,\n isEu: false,\n };\n\n const props: CountryProps = { ...defaults, ...properties };\n\n const methods: CountryMethods = {\n getCode(this: void): string {\n return props.code;\n },\n\n getName(this: void): string {\n return props.name;\n },\n\n getVatPercent(this: void): number {\n return props.vatPercent as number;\n },\n\n getIsEu(this: void): boolean {\n return props.isEu;\n },\n };\n\n return defineEntity(props, methods, Country);\n};\n\nexport default Country;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport Country from '@/entities/Country';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { CountryProps } from '@/types/entities/Country';\n\nexport default (item?: Item) => Country(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n // TimeVolume\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setStartDate(this: void, startDate: Date | 'now'): void {\n set(props, 'startDate', startDate);\n },\n\n getStartDate(this: void, def?: D): Date | 'now' | D {\n return get(props, 'startDate', def) as Date | 'now' | D;\n },\n\n // Rental\n setParentfeature(this: void, parentfeature?: string): void {\n set(props, 'parentfeature', parentfeature);\n },\n\n getParentfeature(this: void, def?: D): string | D {\n return get(props, 'parentfeature', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport License from '@/entities/License';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseProps } from '@/types/entities/License';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { startDate } = props;\n\n if (startDate && typeof startDate === 'string') {\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\n }\n\n return License(props as LicenseProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Licensee entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\n * the licensee.\n * @property string number\n *\n * Licensee name.\n * @property string name\n *\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\n * disabled (tbd).\n * @property boolean active\n *\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\n * @property string licenseeSecret\n *\n * Mark licensee for transfer.\n * @property boolean markedForTransfer\n *\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\n */\n\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\n const props: LicenseeProps = { ...properties };\n\n const methods: LicenseeMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProductNumber(this: void, number: string): void {\n set(props, 'productNumber', number);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setMarkedForTransfer(this: void, mark: boolean): void {\n set(props, 'markedForTransfer', mark);\n },\n\n getMarkedForTransfer(this: void, def?: D): boolean | D {\n return get(props, 'markedForTransfer', def) as boolean | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseeProps, methods, Licensee);\n};\n\nexport default Licensee;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Licensee from '@/entities/Licensee';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseeProps } from '@/types/entities/Licensee';\n\nexport default (item?: Item) => Licensee(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * License template entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\n * assign this number when creating a license template or let NetLicensing generate one.\n * Read-only after creation of the first license from this license template.\n * @property string number\n *\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\n * license template.\n * @property boolean active\n *\n * Name for the licensed item.\n * @property string name\n *\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\n * \"FLOATING\", \"QUANTITY\"\n * @property string licenseType\n *\n * Price for the license. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the license price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * If set to true, every new licensee automatically gets one license out of this license template on\n * creation. Automatic licenses must have their price set to 0.\n * @property boolean automatic\n *\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\n * @property boolean hidden\n *\n * If set to true, licenses from this license template are not visible to the end customer, but\n * participate in validation.\n * @property boolean hideLicenses\n *\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\n * @property boolean gracePeriod\n *\n * Mandatory for 'TIMEVOLUME' license type.\n * @property number timeVolume\n *\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\n * @property string timeVolumePeriod\n *\n * Mandatory for 'FLOATING' license type.\n * @property number maxSessions\n *\n * Mandatory for 'QUANTITY' license type.\n * @property number quantity\n */\n\nconst LicenseTemplate = function (\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\n): LicenseTemplateEntity {\n const props: LicenseTemplateProps = { ...properties };\n\n const methods: LicenseTemplateMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicenseType(this: void, type: LicenseTypeValues): void {\n set(props, 'licenseType', type);\n },\n\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAutomatic(this: void, automatic: boolean): void {\n set(props, 'automatic', automatic);\n },\n\n getAutomatic(this: void, def?: D): boolean | D {\n return get(props, 'automatic', def) as boolean | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setHideLicenses(this: void, hideLicenses: boolean): void {\n set(props, 'hideLicenses', hideLicenses);\n },\n\n getHideLicenses(this: void, def?: D): boolean | D {\n return get(props, 'hideLicenses', def) as boolean | D;\n },\n\n setGracePeriod(this: void, gradePeriod: boolean): void {\n set(props, 'gracePeriod', gradePeriod);\n },\n\n getGracePeriod(this: void, def?: D): boolean | D {\n return get(props, 'gracePeriod', def) as boolean | D;\n },\n\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setMaxSessions(this: void, maxSessions: number): void {\n set(props, 'maxSessions', maxSessions);\n },\n\n getMaxSessions(this: void, def?: D): number | D {\n return get(props, 'maxSessions', def) as number | D;\n },\n\n setQuantity(this: void, quantity: number): void {\n set(props, 'quantity', quantity);\n },\n\n getQuantity(this: void, def?: D): number | D {\n return get(props, 'quantity', def) as number | D;\n },\n\n setProductModuleNumber(this: void, productModuleNumber: string): void {\n set(props, 'productModuleNumber', productModuleNumber);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\n};\n\nexport default LicenseTemplate;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport LicenseTemplate from '@/entities/LicenseTemplate';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\n\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\n\n// types\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Notification entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\n * @property boolean active\n *\n * Notification name.\n * @property string name\n *\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\n * @property float type\n *\n * Comma separated string of events that fire the notification when emitted.\n * @property string events\n *\n * Notification response payload.\n * @property string payload\n *\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\n * @property string url\n *\n * Arbitrary additional user properties of string type may be associated with each notification.\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\n * deleted.\n */\n\nconst Notification = function (\n properties: NotificationProps = {} as NotificationProps,\n): NotificationEntity {\n const props: NotificationProps = { ...properties };\n\n const methods: NotificationMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\n set(props, 'protocol', protocol);\n },\n\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\n },\n\n setEvents(this: void, events: NotificationEventValues[]): void {\n set(props, 'events', events);\n },\n\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\n return get(props, 'events', def) as NotificationEventValues[] | D;\n },\n\n addEvent(event: NotificationEventValues): void {\n const events = this.getEvents([]) as NotificationEventValues[];\n events.push(event);\n\n this.setEvents(events);\n },\n\n setPayload(this: void, payload: string): void {\n set(props, 'payload', payload);\n },\n\n getPayload(this: void, def?: D): string | D {\n return get(props, 'payload', def) as string | D;\n },\n\n setEndpoint(this: void, endpoint: string): void {\n set(props, 'endpoint', endpoint);\n },\n\n getEndpoint(this: void, def?: D): string | D {\n return get(props, 'endpoint', def) as string | D;\n },\n\n serialize(): Record {\n const data = serialize(props);\n\n if (data.events) {\n data.events = this.getEvents([]).join(',');\n }\n\n return data;\n },\n };\n\n return defineEntity(props as NotificationProps, methods, Notification);\n};\n\nexport default Notification;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Notification from '@/entities/Notification';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { NotificationProps } from '@/types/entities/Notification';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { events } = props;\n\n if (events && typeof events === 'string') {\n props.events = events.split(',');\n }\n\n return Notification(props as NotificationProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\n/**\n * PaymentMethod entity used internally by NetLicensing.\n *\n * @property string number\n * @property boolean active\n * @property string paypal.subject\n */\nconst PaymentMethod = function (\n properties: PaymentMethodProps = {} as PaymentMethodProps,\n): PaymentMethodEntity {\n const props: PaymentMethodProps = { ...properties };\n\n const methods: PaymentMethodMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n };\n\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\n};\n\nexport default PaymentMethod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport PaymentMethod from '@/entities/PaymentMethod';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\n\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Product entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\n * @property string number\n *\n * If set to false, the product is disabled. No new licensees can be registered for the product,\n * existing licensees can not obtain new licenses.\n * @property boolean active\n *\n * Product name. Together with the version identifies the product for the end customer.\n * @property string name\n *\n * Product version. Convenience parameter, additional to the product name.\n * @property string version\n *\n * If set to 'true', non-existing licensees will be created at first validation attempt.\n * @property boolean licenseeAutoCreate\n *\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\n * @property boolean licenseeSecretMode\n *\n * Product description. Optional.\n * @property string description\n *\n * Licensing information. Optional.\n * @property string licensingInfo\n *\n * @property boolean inUse\n *\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Product = function (\n properties: ProductProps = {} as ProductProps,\n): ProductEntity {\n const props: ProductProps = { ...properties };\n\n const methods: ProductMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setVersion(this: void, version: string): void {\n set(props, 'version', version);\n },\n\n getVersion(this: void, def?: D): string | number | D {\n return get(props, 'version', def) as string | number | D;\n },\n\n setDescription(this: void, description: string): void {\n set(props, 'description', description);\n },\n\n getDescription(this: void, def?: D): string | D {\n return get(props, 'description', def) as string | D;\n },\n\n setLicensingInfo(this: void, licensingInfo: string): void {\n set(props, 'licensingInfo', licensingInfo);\n },\n\n getLicensingInfo(this: void, def?: D): string | D {\n return get(props, 'licensingInfo', def) as string | D;\n },\n\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\n },\n\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\n },\n\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\n set(props, 'discounts', discounts);\n },\n\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\n },\n\n addDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\n discounts.push(discount);\n\n this.setDiscounts(discounts);\n },\n\n removeDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts();\n\n if (Array.isArray(discounts) && discounts.length > 0) {\n discounts.splice(discounts.indexOf(discount), 1);\n this.setDiscounts(discounts);\n }\n },\n\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\n this.setDiscounts(productDiscounts);\n },\n\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\n return this.getDiscounts(def);\n },\n\n serialize(): Record {\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\n const discounts = this.getDiscounts();\n\n if (discounts) {\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\n }\n\n return map;\n },\n };\n\n return defineEntity(props as ProductProps, methods, Product);\n};\n\nexport default Product;\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\nexport default class NlicError extends AxiosError {\n isNlicError = true;\n\n constructor(\n message?: string,\n code?: string,\n config?: InternalAxiosRequestConfig,\n request?: unknown,\n response?: AxiosResponse,\n stack?: string,\n ) {\n super(message, code, config, request, response);\n this.name = 'NlicError';\n\n if (stack) {\n this.stack = stack;\n }\n\n Object.setPrototypeOf(this, NlicError.prototype);\n }\n}\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\nconst ProductDiscount = function (\n properties: ProductDiscountProps = {} as ProductDiscountProps,\n): ProductDiscountEntity {\n const props: ProductDiscountProps = { ...properties };\n\n if (props.amountFix && props.amountPercent) {\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\n }\n\n const methods: ProductDiscountMethods = {\n setTotalPrice(this: void, totalPrice: number): void {\n set(props, 'totalPrice', totalPrice);\n },\n\n getTotalPrice(this: void, def?: D): number | D {\n return get(props, 'totalPrice', def) as number | D;\n },\n\n setCurrency(currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAmountFix(this: void, amountFix: number): void {\n set(props, 'amountFix', amountFix);\n },\n\n getAmountFix(this: void, def?: D): number | D {\n return get(props, 'amountFix', def) as number | D;\n },\n\n setAmountPercent(this: void, amountPercent: number): void {\n set(props, 'amountPercent', amountPercent);\n },\n\n getAmountPercent(this: void, def?: D): number | D {\n return get(props, 'amountPercent', def) as number | D;\n },\n\n toString() {\n const total = this.getTotalPrice();\n const currency = this.getCurrency();\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\n\n return total && currency && amount ? `${total};${currency};${amount}` : '';\n },\n };\n\n return defineEntity(props, methods, ProductDiscount, {\n set: (obj, prop) => {\n if (prop === 'amountFix') {\n delete obj.amountPercent;\n }\n\n if (prop === 'amountPercent') {\n delete obj.amountFix;\n }\n },\n });\n};\n\nexport default ProductDiscount;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Product from '@/entities/Product';\nimport ProductDiscount from '@/entities/ProductDiscount';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductProps } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\n delete props.discount;\n\n if (discounts) {\n props.discounts = discounts.map((d) => ProductDiscount(d));\n }\n\n return Product(props as ProductProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\n\n// types\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Product module entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\n * licensee for the product.\n * @property string number\n *\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\n * product module.\n * @property boolean active\n *\n * Product module name that is visible to the end customers in NetLicensing Shop.\n * @property string name\n *\n * Licensing model applied to this product module. Defines what license templates can be\n * configured for the product module and how licenses for this product module are processed during validation.\n * @property string licensingModel\n *\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\n * @property number maxCheckoutValidity\n *\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\n * @property number yellowThreshold\n *\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\n * @property number redThreshold\n */\n\nconst ProductModule = function (\n properties: ProductModuleProps = {} as ProductModuleProps,\n): ProductModuleEntity {\n const props: ProductModuleProps = { ...properties };\n\n const methods: ProductModuleMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicensingModel(licensingModel: LicensingModelValues): void {\n set(props, 'licensingModel', licensingModel);\n },\n\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\n },\n\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\n },\n\n getMaxCheckoutValidity(this: void, def?: D): number | D {\n return get(props, 'maxCheckoutValidity', def) as number | D;\n },\n\n setYellowThreshold(this: void, yellowThreshold: number): void {\n set(props, 'yellowThreshold', yellowThreshold);\n },\n\n getYellowThreshold(this: void, def?: D): number | D {\n return get(props, 'yellowThreshold', def) as number | D;\n },\n\n setRedThreshold(this: void, redThreshold: number): void {\n set(props, 'redThreshold', redThreshold);\n },\n\n getRedThreshold(this: void, def?: D): number | D {\n return get(props, 'redThreshold', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\n};\n\nexport default ProductModule;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport ProductModule from '@/entities/ProductModule';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\n\nexport default (item?: Item) => ProductModule(itemToObject(item));\n","/**\n * Token\n *\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\nimport { TokenTypeValues } from '@/types/constants/TokenType';\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\n const props: TokenProps = { ...properties };\n\n const methods: TokenMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setExpirationTime(this: void, expirationTime: Date): void {\n set(props, 'expirationTime', expirationTime);\n },\n\n getExpirationTime(this: void, def?: D): Date | D {\n return get(props, 'expirationTime', def) as Date | D;\n },\n\n setTokenType(this: void, tokenType: TokenTypeValues): void {\n set(props, 'tokenType', tokenType);\n },\n\n getTokenType(this: void, def?: D): TokenTypeValues | D {\n return get(props, 'tokenType', def) as TokenTypeValues | D;\n },\n\n setLicenseeNumber(this: void, licenseeNumber: string): void {\n set(props, 'licenseeNumber', licenseeNumber);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setAction(this: void, action: string): void {\n set(props, 'action', action);\n },\n\n getAction(this: void, def?: D): string | D {\n return get(props, 'action', def) as string | D;\n },\n\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\n set(props, 'apiKeyRole', apiKeyRole);\n },\n\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\n },\n\n setBundleNumber(this: void, bundleNumber: string): void {\n set(props, 'bundleNumber', bundleNumber);\n },\n\n getBundleNumber(this: void, def?: D): string | D {\n return get(props, 'bundleNumber', def) as string | D;\n },\n\n setBundlePrice(this: void, bundlePrice: number): void {\n set(props, 'bundlePrice', bundlePrice);\n },\n\n getBundlePrice(this: void, def?: D): number | D {\n return get(props, 'bundlePrice', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\n },\n\n getPredefinedShoppingItem(this: void, def?: D): string | D {\n return get(props, 'predefinedShoppingItem', def) as string | D;\n },\n\n setSuccessURL(this: void, successURL: string): void {\n set(props, 'successURL', successURL);\n },\n\n getSuccessURL(this: void, def?: D): string | D {\n return get(props, 'successURL', def) as string | D;\n },\n\n setSuccessURLTitle(this: void, successURLTitle: string): void {\n set(props, 'successURLTitle', successURLTitle);\n },\n\n getSuccessURLTitle(this: void, def?: D): string | D {\n return get(props, 'successURLTitle', def) as string | D;\n },\n\n setCancelURL(this: void, cancelURL: string): void {\n set(props, 'cancelURL', cancelURL);\n },\n\n getCancelURL(this: void, def?: D): string | D {\n return get(props, 'cancelURL', def) as string | D;\n },\n\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\n set(props, 'cancelURLTitle', cancelURLTitle);\n },\n\n getCancelURLTitle(this: void, def?: D): string | D {\n return get(props, 'cancelURLTitle', def) as string | D;\n },\n\n getShopURL(this: void, def?: D): string | D {\n return get(props, 'shopURL', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['shopURL'] });\n },\n };\n\n return defineEntity(props as TokenProps, methods, Token);\n};\n\nexport default Token;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Token from '@/entities/Token';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TokenProps } from '@/types/entities/Token';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { expirationTime } = props;\n\n if (expirationTime && typeof expirationTime === 'string') {\n props.expirationTime = new Date(expirationTime);\n }\n\n return Token(props as TokenProps);\n};\n","// types\nimport type { LicenseEntity } from '@/types/entities/License';\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\nimport type { TransactionEntity } from '@/types/entities/Transaction';\n\n/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\n transaction: TransactionEntity;\n license: LicenseEntity;\n\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\n this.transaction = transaction;\n this.license = license;\n }\n\n setTransaction(transaction: TransactionEntity): void {\n this.transaction = transaction;\n }\n\n getTransaction(): TransactionEntity {\n return this.transaction;\n }\n\n setLicense(license: LicenseEntity): void {\n this.license = license;\n }\n\n getLicense(): LicenseEntity {\n return this.license;\n }\n}\n\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\n new LicenseTransactionJoin(transaction, license);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Transaction entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\n * always generated by NetLicensing.\n * @property string number\n *\n * always true for transactions\n * @property boolean active\n *\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\n * @property string status\n *\n * \"SHOP\". AUTO transaction for internal use only.\n * @property string source\n *\n * grand total for SHOP transaction (see source).\n * @property number grandTotal\n *\n * discount for SHOP transaction (see source).\n * @property number discount\n *\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\n * @property string currency\n *\n * Date created. Optional.\n * @property string dateCreated\n *\n * Date closed. Optional.\n * @property string dateClosed\n */\n\nconst Transaction = function (\n properties: TransactionProps = {} as TransactionProps,\n): TransactionEntity {\n const props: TransactionProps = { ...properties };\n\n const methods: TransactionMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setStatus(this: void, status: TransactionStatusValues): void {\n set(props, 'status', status);\n },\n\n getStatus(this: void, def?: D): TransactionStatusValues | D {\n return get(props, 'status', def) as TransactionStatusValues | D;\n },\n\n setSource(this: void, source: TransactionSourceValues): void {\n set(props, 'source', source);\n },\n getSource(this: void, def?: D): TransactionSourceValues | D {\n return get(props, 'source', def) as TransactionSourceValues | D;\n },\n setGrandTotal(this: void, grandTotal: number): void {\n set(props, 'grandTotal', grandTotal);\n },\n getGrandTotal(this: void, def?: D): number | D {\n return get(props, 'grandTotal', def) as number | D;\n },\n\n setDiscount(this: void, discount: number): void {\n set(props, 'discount', discount);\n },\n\n getDiscount(this: void, def?: D): number | D {\n return get(props, 'discount', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setDateCreated(this: void, dateCreated: Date): void {\n set(props, 'dateCreated', dateCreated);\n },\n\n getDateCreated(this: void, def?: D): Date | D {\n return get(props, 'dateCreated', def) as Date | D;\n },\n\n setDateClosed(this: void, dateCreated: Date): void {\n set(props, 'dateClosed', dateCreated);\n },\n\n getDateClosed(this: void, def?: D): Date | D {\n return get(props, 'dateClosed', def) as Date | D;\n },\n\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\n set(props, 'paymentMethod', paymentMethod);\n },\n\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\n },\n\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\n set(props, 'licenseTransactionJoins', joins);\n },\n\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\n },\n\n serialize(this: void) {\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\n },\n };\n\n return defineEntity(props as TransactionProps, methods, Transaction);\n};\n\nexport default Transaction;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport License from '@/entities/License';\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\nimport Transaction from '@/entities/Transaction';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TransactionProps } from '@/types/entities/Transaction';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { dateCreated, dateClosed } = props;\n\n if (dateCreated && typeof dateCreated === 'string') {\n props.dateCreated = new Date(dateCreated);\n }\n\n if (dateClosed && typeof dateClosed === 'string') {\n props.dateClosed = new Date(dateClosed);\n }\n\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\n\n delete props.licenseTransactionJoin;\n\n if (licenseTransactionJoins) {\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\n const transaction = Transaction({ number: transactionNumber });\n const license = License({ number: licenseNumber });\n\n return LicenseTransactionJoin(transaction, license);\n });\n }\n\n return Transaction(props as TransactionProps);\n};\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { Info } from '@/types/api/response';\n\nlet axiosInstance: AxiosInstance = axios.create();\nlet lastResponse: AxiosResponse | null = null;\nlet info: Info[] = [];\n\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\n axiosInstance = instance;\n};\n\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\n\nexport const setLastResponse = (response: AxiosResponse | null): void => {\n lastResponse = response;\n};\n\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\n\nexport const setInfo = (infos: Info[]): void => {\n info = infos;\n};\n\nexport const getInfo = (): Info[] => info;\n","{\n \"name\": \"netlicensing-client\",\n \"version\": \"1.2.39\",\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\n \"keywords\": [\n \"labs64\",\n \"netlicensing\",\n \"licensing\",\n \"licensing-as-a-service\",\n \"license\",\n \"license-management\",\n \"software-license\",\n \"client\",\n \"restful\",\n \"restful-api\",\n \"javascript\",\n \"wrapper\",\n \"api\",\n \"client\"\n ],\n \"license\": \"Apache-2.0\",\n \"author\": \"Labs64 GmbH\",\n \"homepage\": \"https://netlicensing.io\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\n },\n \"contributors\": [\n {\n \"name\": \"Ready Brown\",\n \"email\": \"ready.brown@hotmail.de\",\n \"url\": \"https://github.com/r-brown\"\n },\n {\n \"name\": \"Viacheslav Rudkovskiy\",\n \"email\": \"viachaslau.rudkovski@labs64.de\",\n \"url\": \"https://github.com/v-rudkovskiy\"\n },\n {\n \"name\": \"Andrei Yushkevich\",\n \"email\": \"yushkevich@me.com\",\n \"url\": \"https://github.com/yushkevich\"\n }\n ],\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:dev\": \"vitest watch\",\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\n },\n \"peerDependencies\": {\n \"axios\": \"^1.9.0\"\n },\n \"dependencies\": {},\n \"devDependencies\": {\n \"@eslint/js\": \"^9.24.0\",\n \"@types/node\": \"^22.14.0\",\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\n \"@typescript-eslint/parser\": \"^8.29.1\",\n \"@vitest/eslint-plugin\": \"^1.1.43\",\n \"axios\": \"^1.9.0\",\n \"eslint\": \"^9.24.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"prettier\": \"3.5.3\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"typescript-eslint\": \"^8.29.1\",\n \"vitest\": \"^3.1.1\"\n },\n \"engines\": {\n \"node\": \">= 16.9.0\",\n \"npm\": \">= 8.0.0\"\n },\n \"browserslist\": [\n \"> 1%\",\n \"last 2 versions\",\n \"not ie <= 10\"\n ]\n}\n","export default >(data: T): string => {\n const query: string[] = [];\n\n const build = (obj: unknown, keyPrefix?: string): void => {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item) => {\n build(item, keyPrefix ? `${keyPrefix}` : '');\n });\n\n return;\n }\n\n if (obj instanceof Date) {\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\n return;\n }\n\n if (typeof obj === 'object') {\n Object.keys(obj).forEach((key) => {\n const value = obj[key as keyof typeof obj];\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\n });\n\n return;\n }\n\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\n };\n\n build(data);\n\n return query.join('&');\n};\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\n\n// constants\nimport SecurityMode from '@/constants/SecurityMode';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\n// package.json\nimport pkg from '../../../package.json';\n\n// service\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\nimport toQueryString from './toQueryString';\n\nexport default async (\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => {\n const headers: Record = {\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n // only node.js has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\n }\n\n const req: AxiosRequestConfig = {\n method,\n headers,\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\n responseType: 'json',\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\n return toQueryString(d as Record);\n }\n\n if (!h['NetLicensing-Origin']) {\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\n }\n\n return d;\n },\n };\n\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\n if (req.method === 'post') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n req.data = data;\n } else {\n req.params = data;\n }\n\n switch (context.getSecurityMode()) {\n // Basic Auth\n case SecurityMode.BASIC_AUTHENTICATION:\n {\n if (!context.getUsername()) {\n throw new NlicError('Missing parameter \"username\"');\n }\n\n if (!context.getPassword()) {\n throw new NlicError('Missing parameter \"password\"');\n }\n\n req.auth = {\n username: context.getUsername(),\n password: context.getPassword(),\n };\n }\n break;\n // ApiKey Auth\n case SecurityMode.APIKEY_IDENTIFICATION:\n if (!context.getApiKey()) {\n throw new NlicError('Missing parameter \"apiKey\"');\n }\n\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\n break;\n // without authorization\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\n break;\n default:\n throw new NlicError('Unknown security mode');\n }\n\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\n\n try {\n const response: AxiosResponse = await instance(req);\n const info = response.data.infos?.info || [];\n\n setLastResponse(response);\n setInfo(info);\n\n if (config?.onResponse) {\n config.onResponse(response);\n }\n\n if (info.length > 0) {\n if (config?.onInfo) {\n config.onInfo(info);\n }\n\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\n }\n }\n\n return response;\n } catch (e) {\n const error = e as AxiosError;\n\n const response = error.response;\n const info = (response?.data as NlicResponse)?.infos?.info || [];\n\n setLastResponse(response || null);\n setInfo(info);\n\n if ((e as AxiosError).isAxiosError) {\n let message = (e as AxiosError).message;\n\n if (response?.data && info.length > 0) {\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n message = eInfo.value;\n }\n }\n\n throw new NlicError(\n message,\n error.code,\n error.config,\n error.request,\n error.response as AxiosResponse,\n );\n }\n\n throw e;\n }\n};\n","import type { AxiosResponse } from 'axios';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ContextInstance } from '@/types/vo/Context';\n\n// service\nimport request from './request';\n\nexport const get = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'get', endpoint, data, config);\n\nexport const post = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'post', endpoint, data, config);\n\nexport const del = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'delete', endpoint, data, config);\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\n\n// service\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\nimport { get, post, del } from '@/services/Service/methods';\nimport request from '@/services/Service/request';\nimport toQueryString from '@/services/Service/toQueryString';\n\n// types\nimport { Info, NlicResponse } from '@/types/api/response';\nimport { RequestConfig, IService } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\nexport { get, post, del, request, toQueryString };\n\nconst service: IService = {\n setAxiosInstance(this: void, instance: AxiosInstance) {\n setAxiosInstance(instance);\n },\n\n getAxiosInstance(this: void): AxiosInstance {\n return getAxiosInstance();\n },\n\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\n return getLastResponse();\n },\n\n getInfo(this: void): Info[] {\n return getInfo();\n },\n\n get(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return get(context, endpoint, data, config);\n },\n\n post(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return post(context, endpoint, data, config);\n },\n\n delete(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return del(context, endpoint, data, config);\n },\n\n request(\n this: void,\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return request(context, method, endpoint, data, config);\n },\n\n toQueryString>(this: void, data: T): string {\n return toQueryString(data);\n },\n};\n\nexport default service;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst FILTER_DELIMITER = ';';\nconst FILTER_PAIR_DELIMITER = '=';\n\nexport const encode = (filter: Record): string => {\n return Object.keys(filter)\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\n .join(FILTER_DELIMITER);\n};\n\nexport const decode = (filter: string): Record => {\n const result: Record = {};\n\n filter.split(FILTER_DELIMITER).forEach((v) => {\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\n result[name] = value;\n });\n\n return result;\n};\n\nexport default { encode, decode };\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nexport const isDefined = (value: unknown): boolean => {\n return typeof value !== 'undefined' && typeof value !== 'function';\n};\n\nexport const isValid = (value: unknown): boolean => {\n if (!isDefined(value)) {\n return false;\n }\n\n if (typeof value === 'number') {\n return !Number.isNaN(value);\n }\n\n return true;\n};\n\nexport const ensureNotNull = (value: unknown, name: string): void => {\n if (value === null) {\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\n }\n\n if (!isValid(value)) {\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\n }\n};\n\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\n ensureNotNull(value, name);\n\n if (!value) {\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\n }\n};\n\nexport default {\n isDefined,\n isValid,\n ensureNotNull,\n ensureNotEmpty,\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { ItemPagination } from '@/types/api/response';\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\n\nconst Page = function (content: T, pagination?: Partial) {\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\n\n const page: PaginationMethods = {\n getContent(this: void): T {\n return content;\n },\n\n getPagination(this: void): Pagination {\n return {\n pageNumber,\n itemsNumber,\n totalPages,\n totalItems,\n hasNext: totalPages > pageNumber + 1,\n };\n },\n\n getPageNumber(this: void): number {\n return pageNumber;\n },\n\n getItemsNumber(this: void): number {\n return itemsNumber;\n },\n\n getTotalPages(this: void): number {\n return totalPages;\n },\n\n getTotalItems(this: void): number {\n return totalItems;\n },\n\n hasNext(this: void): boolean {\n return totalPages > pageNumber + 1;\n },\n };\n\n return new Proxy(content, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(page, prop)) {\n return page[prop as keyof typeof page];\n }\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return (Page.prototype as object) || null;\n },\n }) as PageInstance;\n};\n\nexport default Page;\n","/**\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToBundle from '@/converters/itemToBundle';\n\n// services\nimport itemToLicense from '@/converters/itemToLicense';\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\nimport { IBundleService } from '@/types/services/BundleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\nconst type = Constants.Bundle.TYPE;\n\nconst bundleService: IBundleService = {\n /**\n * Gets a bundle by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the bundle number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the bundle object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Returns bundle of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of bundle entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const bundles: BundleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToBundle>(v));\n\n return Page(bundles || [], items as ItemPagination);\n },\n\n /**\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created bundle object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Updates bundle properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * updated bundle in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Deletes bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Obtain bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * licensee number\n * @param licenseeNumber String\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses\n * @returns {Promise}\n */\n async obtain(\n context: ContextInstance,\n number: string,\n licenseeNumber: string,\n config?: RequestConfig,\n ): Promise>[]> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\n\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\n const items = response.data.items;\n\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\n\n return licenses?.map((v) => itemToLicense>(v)) || [];\n },\n};\n\nexport default bundleService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\n\n// utils\nimport { isValid } from '@/utils/validation';\n\nclass ValidationResults implements ValidationResultsInstance {\n readonly validations: Record;\n ttl?: Date;\n\n constructor() {\n this.validations = {};\n }\n\n getValidators(): Record {\n return this.validations;\n }\n\n setValidation(validation: ProductModuleValidation): this {\n this.validations[validation.productModuleNumber] = validation;\n return this;\n }\n\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.validations[productModuleNumber] || def;\n }\n\n setProductModuleValidation(validation: ProductModuleValidation): this {\n return this.setValidation(validation);\n }\n\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.getValidation(productModuleNumber, def);\n }\n\n setTtl(ttl: Date | string): this {\n if (!isValid(ttl)) {\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\n }\n\n this.ttl = new Date(ttl);\n return this;\n }\n\n getTtl(): Date | undefined {\n return this.ttl;\n }\n\n toString(): string {\n let data = 'ValidationResult [';\n\n Object.keys(this.validations).forEach((pmNumber) => {\n data += `ProductModule<${pmNumber}>`;\n\n if (pmNumber in this.validations) {\n data += JSON.stringify(this.validations[pmNumber]);\n }\n });\n\n data += ']';\n\n return data;\n }\n}\n\nexport default (): ValidationResultsInstance => new ValidationResults();\n","/**\n * Licensee Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/licensee-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicensee from '@/converters/itemToLicensee';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\nimport { ILicenseeService } from '@/types/services/LicenseeService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\nimport ValidationResults from '@/vo/ValidationResults';\n\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\nconst type = Constants.Licensee.TYPE;\n\nconst licenseeService: ILicenseeService = {\n /**\n * Gets licensee by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the licensee number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the licensee in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of licensees (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseeEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicensee>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new licensee is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created licensee object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licensee, 'licensee');\n\n const data = licensee.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Updates licensee properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return updated licensee in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licensee, 'licensee');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Deletes licensee.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Validates active licenses of the licensee.\n * In the case of multiple product modules validation,\n * required parameters indexes will be added automatically.\n * See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\n *\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * optional validation parameters. See ValidationParameters and licensing model documentation for\n * details.\n * @param validationParameters NetLicensing.ValidationParameters.\n *\n * (optional) service request config\n * @param config\n *\n * @returns {ValidationResults}\n */\n async validate(\n context: ContextInstance,\n number: string,\n validationParameters?: ValidationParametersInstance,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n const data: Record = {};\n\n if (validationParameters) {\n const productNumber: string | undefined = validationParameters.productNumber;\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const licenseeProperties = validationParameters.licenseeProperties;\n\n Object.keys(licenseeProperties).forEach((key: string) => {\n data[key] = validationParameters.getLicenseeProperty(key);\n });\n\n if (validationParameters.isForOfflineUse()) {\n data.forOfflineUse = true;\n }\n\n if (validationParameters.isDryRun()) {\n data.dryRun = true;\n }\n\n const parameters = validationParameters.getParameters();\n\n Object.keys(parameters).forEach((pmNumber, i) => {\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\n\n const parameter = parameters[pmNumber];\n\n if (parameter) {\n Object.keys(parameter).forEach((key: string) => {\n data[key + i] = parameter[key];\n });\n }\n });\n }\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\n\n const validationResults = ValidationResults();\n\n const ttl = response.data.ttl;\n\n if (ttl) {\n validationResults.setTtl(ttl);\n }\n\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\n\n items?.forEach((v) => {\n validationResults.setValidation(itemToObject(v));\n });\n\n return validationResults;\n },\n\n /**\n * Transfer licenses between licensees.\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the number of the licensee receiving licenses\n * @param number string\n *\n * the number of the licensee delivering licenses\n * @param sourceLicenseeNumber string\n *\n * (optional) service request config\n * @param config\n *\n * @returns {Promise}\n */\n transfer(\n context: ContextInstance,\n number: string,\n sourceLicenseeNumber: string,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\n\n const data = { sourceLicenseeNumber };\n\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\n },\n};\n\nexport default licenseeService;\n","/**\n * JS representation of the License Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicense from '@/converters/itemToLicense';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\nimport { ILicenseService } from '@/types/services/LicenseService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.License.ENDPOINT_PATH;\nconst type = Constants.License.TYPE;\n\nconst licenseService: ILicenseService = {\n /**\n * Gets license by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#get-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Returns licenses of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#licenses-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicense>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#create-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent licensee to which the new license is to be added\n * @param licenseeNumber string\n *\n * license template that the license is created from\n * @param licenseTemplateNumber string\n *\n * For privileged logins specifies transaction for the license creation. For regular logins new\n * transaction always created implicitly, and the operation will be in a separate transaction.\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\n * auto-generated number.\n * @param transactionNumber null|string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created license object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n licenseeNumber: string | null,\n licenseTemplateNumber: string | null,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (licenseeNumber) {\n data.licenseeNumber = licenseeNumber;\n }\n\n if (licenseTemplateNumber) {\n data.licenseTemplateNumber = licenseTemplateNumber;\n }\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Updates license properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#update-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\n * operation will be in a separate transaction.\n * @param transactionNumber string|null\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return updated license in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Deletes license.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#delete-license\n *\n * When any license is deleted, corresponding transaction is created automatically.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-template-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport {\n LicenseTemplateProps,\n LicenseTemplateEntity,\n SavedLicenseTemplateProps,\n} from '@/types/entities/LicenseTemplate';\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\nconst type = Constants.LicenseTemplate.TYPE;\n\nconst licenseTemplateService: ILicenseTemplateService = {\n /**\n * Gets license template by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license template number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license template object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseTemplateEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicenseTemplate>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license template object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product module to which the new license template is to be added\n * @param productModuleNumber\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * the newly created license template object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productModuleNumber: string | null,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const data = licenseTemplate.serialize();\n\n if (productModuleNumber) {\n data.productModuleNumber = productModuleNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Updates license template properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * updated license template in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseTemplateService;\n","/**\n * JS representation of the Notification Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/notification-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToNotification from '@/converters/itemToNotification';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\nimport { INotificationService } from '@/types/services/NotificationService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\nconst type = Constants.Notification.TYPE;\n\nconst notificationService: INotificationService = {\n /**\n * Gets notification by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#get-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the notification number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the notification object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Returns notifications of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of notification entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: NotificationEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToNotification>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new notification with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#create-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created notification object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, endpoint, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Updates notification properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#update-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * updated notification in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Deletes notification.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default notificationService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\nconst type = Constants.PaymentMethod.TYPE;\n\nconst paymentMethodService: IPaymentMethodService = {\n /**\n * Gets payment method by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the payment method in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n\n /**\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of payment method entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: PaymentMethodEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToPaymentMethod>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Updates payment method properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param paymentMethod NetLicensing.PaymentMethod\n *\n * (optional) service request config\n * @param config\n *\n * return updated payment method in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n paymentMethod: PaymentMethodEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(paymentMethod, 'paymentMethod');\n\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n};\n\nexport default paymentMethodService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-module-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProductModule from '@/converters/itemToProductModule';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\nconst type = Constants.ProductModule.TYPE;\n\nconst productModuleService: IProductModuleService = {\n /**\n * Gets product module by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product module number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product module object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product modules entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductModuleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProductModule>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product module object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new product module is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * the newly created product module object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string | null,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(productModule, 'productModule');\n\n const data = productModule.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Updates product module properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * updated product module in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(productModule, 'productModule');\n\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Deletes product module.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productModuleService;\n","/**\n * JS representation of the Product Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProduct from '@/converters/itemToProduct';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\nimport { IProductService } from '@/types/services/ProductService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Product.ENDPOINT_PATH;\nconst type = Constants.Product.TYPE;\n\nconst productService: IProductService = {\n /**\n * Gets product by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#get-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#products-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProduct>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#create-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created product object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, endpoint, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Updates product properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#update-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * updated product in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Deletes product.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#delete-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productService;\n","/**\n * JS representation of the Token Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/token-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToToken from '@/converters/itemToToken';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ITokenService } from '@/types/services/TokenService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Token.ENDPOINT_PATH;\nconst type = Constants.Token.TYPE;\n\nconst tokenService: ITokenService = {\n /**\n * Gets token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#get-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number\n *\n * (optional) service request config\n * @param config\n *\n * return the token in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Returns tokens of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#tokens-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined|null\n *\n * (optional) service request config\n * @param config\n *\n * array of token entities or empty array if nothing found.\n * @return array\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TokenEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToToken>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new token.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param token Token\n *\n * (optional) service request config\n * @param config\n *\n * return created token in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n token: TokenEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(token, 'token');\n\n const response = await Service.post(context, endpoint, token.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Delete token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#delete-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default tokenService;\n","/**\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/transaction-services\n *\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToTransaction from '@/converters/itemToTransaction';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport type { ItemPagination } from '@/types/api/response';\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ITransactionService } from '@/types/services/TransactionService';\nimport type { ContextInstance } from '@/types/vo/Context';\nimport type { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\nconst type = Constants.Transaction.TYPE;\n\nconst transactionService: ITransactionService = {\n /**\n * Gets transaction by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the transaction number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the transaction in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string\n *\n * (optional) service request config\n * @param config\n *\n * array of transaction entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TransactionEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToTransaction>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created transaction object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Updates transaction properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * transaction number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return updated transaction in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n};\n\nexport default transactionService;\n","/**\n * JS representation of the Utility Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/utility-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToCountry from '@/converters/itemToCountry';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\nimport { CountryEntity } from '@/types/entities/Country';\nimport { RequestConfig } from '@/types/services/Service';\nimport { IUtilityService } from '@/types/services/UtilityService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\n\nconst utilityService: IUtilityService = {\n /**\n * Returns all license types. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license types or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSE_TYPE;\n\n const licenseTypes: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all license models. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license models or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicensingModels(\n context: ContextInstance,\n config?: RequestConfig,\n ): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\n\n const licensingModels: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all countries.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter\n *\n * (optional) service request config\n * @param config\n *\n * collection of available countries or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async listCountries(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const type = Constants.Utility.COUNTRY_TYPE;\n\n const countries: CountryEntity[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToCountry(v));\n\n return Page(countries || [], items as ItemPagination);\n },\n};\n\nexport default utilityService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport SecurityModeEnum from '@/constants/SecurityMode';\n\n// types\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\n\nclass Context implements ContextInstance {\n baseUrl: string;\n securityMode: SecurityModeValues;\n username?: string;\n password?: string;\n apiKey?: string;\n publicKey?: string;\n\n constructor(props?: ContextConfig) {\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\n this.username = props?.username;\n this.password = props?.password;\n this.apiKey = props?.apiKey;\n this.publicKey = props?.publicKey;\n }\n\n setBaseUrl(baseUrl: string): this {\n this.baseUrl = baseUrl;\n return this;\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n setSecurityMode(securityMode: SecurityModeValues): this {\n this.securityMode = securityMode;\n return this;\n }\n\n getSecurityMode(): SecurityModeValues {\n return this.securityMode;\n }\n\n setUsername(username: string): this {\n this.username = username;\n return this;\n }\n\n getUsername(def?: D): string | D {\n return (this.username || def) as string | D;\n }\n\n setPassword(password: string): this {\n this.password = password;\n return this;\n }\n\n getPassword(def?: D): string | D {\n return (this.password || def) as string | D;\n }\n\n setApiKey(apiKey: string): this {\n this.apiKey = apiKey;\n return this;\n }\n\n getApiKey(def?: D): string | D {\n return (this.apiKey || def) as string | D;\n }\n\n setPublicKey(publicKey: string): this {\n this.publicKey = publicKey;\n return this;\n }\n\n getPublicKey(def?: D): string | D {\n return (this.publicKey || def) as string | D;\n }\n}\n\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport {\n ValidationParametersInstance,\n Parameter,\n Parameters,\n LicenseeProperties,\n} from '@/types/vo/ValidationParameters';\n\nclass ValidationParameters implements ValidationParametersInstance {\n productNumber?: string;\n dryRun?: boolean;\n forOfflineUse?: boolean;\n licenseeProperties: LicenseeProperties;\n parameters: Parameters;\n\n constructor() {\n this.parameters = {};\n this.licenseeProperties = {};\n }\n\n setProductNumber(productNumber: string): this {\n this.productNumber = productNumber;\n return this;\n }\n\n getProductNumber(): string | undefined {\n return this.productNumber;\n }\n\n setLicenseeName(licenseeName: string): this {\n this.licenseeProperties.licenseeName = licenseeName;\n return this;\n }\n\n getLicenseeName(): string | undefined {\n return this.licenseeProperties.licenseeName;\n }\n\n setLicenseeSecret(licenseeSecret: string): this {\n this.licenseeProperties.licenseeSecret = licenseeSecret;\n return this;\n }\n\n getLicenseeSecret(): string | undefined {\n return this.licenseeProperties.licenseeSecret;\n }\n\n getLicenseeProperties(): LicenseeProperties {\n return this.licenseeProperties;\n }\n\n setLicenseeProperty(key: string, value: string): this {\n this.licenseeProperties[key] = value;\n return this;\n }\n\n getLicenseeProperty(key: string, def?: D): string | D {\n return (this.licenseeProperties[key] || def) as string | D;\n }\n\n setForOfflineUse(forOfflineUse: boolean): this {\n this.forOfflineUse = forOfflineUse;\n return this;\n }\n\n isForOfflineUse() {\n return !!this.forOfflineUse;\n }\n\n setDryRun(dryRun: boolean): this {\n this.dryRun = dryRun;\n return this;\n }\n\n isDryRun(): boolean {\n return !!this.dryRun;\n }\n\n getParameters(): Parameters {\n return this.parameters;\n }\n\n setParameter(productModuleNumber: string, parameter: Parameter): this {\n this.parameters[productModuleNumber] = parameter;\n return this;\n }\n\n getParameter(productModuleNumber: string): Parameter | undefined {\n return this.parameters[productModuleNumber];\n }\n\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\n return this.getParameter(productModuleNumber);\n }\n\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\n return this.setParameter(productModuleNumber, productModuleParameters);\n }\n}\n\nexport default (): ValidationParametersInstance => new ValidationParameters();\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","message","code","config","request","response","utils_default","prototype","descriptors","error","customProps","axiosError","obj","prop","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","message","config","request","AxiosError_default","utils_default","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","contentType","utils_default","platform_default","type","tokens","token","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","isFetchSupported","isReadableStreamSupported","encodeText","encoder","str","test","fn","args","supportsRequestStream","duplexAccessed","hasContentType","platform_default","DEFAULT_CHUNK_SIZE","supportsResponseStream","utils_default","resolvers","res","type","_","config","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","fetch_default","url","method","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","knownAdapters","null_default","xhr_default","fetch_default","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","adapters_default","adapters","length","nameOrAdapter","rejectedReasons","i","id","AxiosError_default","reasons","state","s","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","message","code","config","request","response","utils_default","prototype","descriptors","error","customProps","axiosError","obj","prop","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","message","config","request","AxiosError_default","utils_default","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","contentType","utils_default","platform_default","type","tokens","token","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","isFetchSupported","isReadableStreamSupported","encodeText","encoder","str","test","fn","args","supportsRequestStream","duplexAccessed","hasContentType","platform_default","DEFAULT_CHUNK_SIZE","supportsResponseStream","utils_default","resolvers","res","type","_","config","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","fetch_default","url","method","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","knownAdapters","null_default","xhr_default","fetch_default","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","adapters_default","adapters","length","nameOrAdapter","rejectedReasons","i","id","AxiosError_default","reasons","state","s","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index ef3a32b..541b7d0 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -"use strict";var wt=Object.create;var ee=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,kt=Object.prototype.hasOwnProperty;var $t=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vt(e))!kt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=Ut(e,i))||t.enumerable});return n};var Bt=(n,e,o)=>(o=n!=null?wt(jt(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),qt=n=>Ye(ee({},"__esModule",{value:!0}),n);var Nn={};$t(Nn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>ht,Constants:()=>u,Context:()=>Ot,Country:()=>se,License:()=>w,LicenseService:()=>It,LicenseTemplate:()=>ce,LicenseTemplateService:()=>bt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>Nt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>Lt,Page:()=>y,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Rt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>le,ProductModuleService:()=>Ct,ProductService:()=>xt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>fe,TokenService:()=>St,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>At,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>Mt,ValidationParameters:()=>_t,ValidationResults:()=>De,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Et,filterEncode:()=>D,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>V,itemToTransaction:()=>O,serialize:()=>E});module.exports=qt(Nn);var Yt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Yt;var Ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=Ft;var Ht=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Ht;var Kt=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Kt;var zt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=zt;var Gt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Gt;var Jt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=Jt;var Qt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Qt;var Wt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Wt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Xt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Xt;var Zt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Zt;var en=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=en;var tn=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=tn;var nn=n=>{try{return JSON.parse(n)}catch{return n}},on=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=nn(t)}),e},sn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...on(n.property),...sn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var rn=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return xe(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(h=>{h(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=rn;var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var Qe=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Qe)},se=Qe;var re=n=>se(P(n));var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},w=We;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},st)},le=st;var M=n=>le(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},rt)},fe=rt;var V=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),fe(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=z({number:s}),l=w({number:c});return Te(d,l)})),z(e)};var ct=Bt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},lt=()=>mt,Me=n=>{ut=n},ft=()=>ut;var Oe={name:"netlicensing-client",version:"1.2.39",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var j=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ge(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let l=await d(c),f=l.data.infos?.info||[];if(Ae(l),Me(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let h=f.find(({type:b})=>b==="ERROR");if(h)throw new v(h.value,h.id,l.config,l.request,l)}return l}catch(l){let f=l,h=f.response,b=h?.data?.infos?.info||[];if(Ae(h||null),Me(b),l.isAxiosError){let L=l.message;if(h?.data&&b.length>0){let $=b.find(({type:B})=>B==="ERROR");$&&(L=$.value)}throw new v(L,f.code,f.config,f.request,f.response)}throw l}};var Tt=(n,e,o,t)=>j(n,"get",e,o,t),Pt=(n,e,o,t)=>j(n,"post",e,o,t),gt=(n,e,o,t)=>j(n,"delete",e,o,t);var cn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return lt()},getInfo(){return ft()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return j(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=cn;var yt=";",Dt="=",D=n=>Object.keys(n).map(e=>`${e}${Dt}${String(n[e])}`).join(yt),Et=n=>{let e={};return n.split(yt).forEach(o=>{let[t,i]=o.split(Dt);e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var vt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,h){return Reflect.set(d,l,f,h)},getPrototypeOf(){return vt.prototype||null}})},y=vt;var k=u.Bundle.ENDPOINT_PATH,dn=u.Bundle.ENDPOINT_OBTAIN_PATH,ye=u.Bundle.TYPE,mn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${k}/${e}`,{},o)).data.items?.item.find(s=>s.type===ye);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,k,t,o)).data.items,c=s?.item.filter(d=>d.type===ye).map(d=>R(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,k,e.serialize(),o)).data.items?.item.find(s=>s.type===ye);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${k}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ye);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${k}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${k}/${e}/${dn}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>I(l))||[]}},ht=mn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},De=()=>new we;var _=u.Licensee.ENDPOINT_PATH,un=u.Licensee.ENDPOINT_PATH_VALIDATE,pn=u.Licensee.ENDPOINT_PATH_TRANSFER,Ee=u.Licensee.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ee);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_,t,o)).data.items,c=s?.item.filter(d=>d.type===Ee).map(d=>C(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===Ee);return C(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ee);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let h=o.licenseeProperties;Object.keys(h).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let b=o.getParameters();Object.keys(b).forEach((L,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=L;let B=b[L];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${un}`,i,t),c=De(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${pn}`,i,t)}},Nt=ln;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,J,t,o)).data.items,c=s?.item.filter(d=>d.type===ve).map(d=>I(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,J,c,s)).data.items?.item.find(f=>f.type===ve);return I(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(l=>l.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},It=fn;var Q=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Q,t,o)).data.items,c=s?.item.filter(d=>d.type===he).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Q,i,t)).data.items?.item.find(d=>d.type===he);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},bt=Tn;var W=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,W,t,o)).data.items,c=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,W,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Lt=Pn;var Ue=u.PaymentMethod.ENDPOINT_PATH,Ve=u.PaymentMethod.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ve);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Ue,t,o)).data.items,c=s?.item.filter(d=>d.type===Ve).map(d=>U(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ve);return U(s)}},Rt=gn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,X,t,o)).data.items,c=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},Ct=yn;var Z=u.Product.ENDPOINT_PATH,be=u.Product.TYPE,Dn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===be);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Z,t,o)).data.items,c=s?.item.filter(d=>d.type===be).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===be);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===be);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},xt=Dn;var Le=u.Token.ENDPOINT_PATH,je=u.Token.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Le}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return V(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Le,t,o)).data.items,c=s?.item.filter(d=>d.type===je).map(d=>V(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,Le,e.serialize(),o)).data.items?.item.find(s=>s.type===je);return V(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Le}/${e}`,{forceCascade:!!o},t)}},St=En;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,vn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Re,t,o)).data.items,c=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ce);return O(s)}},At=vn;var ke=u.Utility.ENDPOINT_PATH,hn={async listLicenseTypes(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${ke}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>re(f));return y(l||[],c)}},Mt=hn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},Ot=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},_t=()=>new Be; +"use strict";var wt=Object.create;var ee=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,kt=Object.prototype.hasOwnProperty;var $t=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vt(e))!kt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=Ut(e,i))||t.enumerable});return n};var Bt=(n,e,o)=>(o=n!=null?wt(jt(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),qt=n=>Ye(ee({},"__esModule",{value:!0}),n);var Nn={};$t(Nn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>ht,Constants:()=>u,Context:()=>Ot,Country:()=>se,License:()=>w,LicenseService:()=>It,LicenseTemplate:()=>ce,LicenseTemplateService:()=>bt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>Nt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>Lt,Page:()=>y,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Rt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>le,ProductModuleService:()=>Ct,ProductService:()=>xt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>fe,TokenService:()=>St,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>At,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>Mt,ValidationParameters:()=>_t,ValidationResults:()=>De,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Et,filterEncode:()=>D,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>V,itemToTransaction:()=>O,serialize:()=>E});module.exports=qt(Nn);var Yt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Yt;var Ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=Ft;var Ht=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Ht;var Kt=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Kt;var zt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=zt;var Gt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Gt;var Jt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=Jt;var Qt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Qt;var Wt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Wt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Xt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Xt;var Zt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Zt;var en=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=en;var tn=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=tn;var nn=n=>{try{return JSON.parse(n)}catch{return n}},on=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=nn(t)}),e},sn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...on(n.property),...sn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var rn=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return xe(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(h=>{h(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=rn;var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var Qe=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Qe)},se=Qe;var re=n=>se(P(n));var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},w=We;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},st)},le=st;var M=n=>le(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},rt)},fe=rt;var V=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),fe(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=z({number:s}),l=w({number:c});return Te(d,l)})),z(e)};var ct=Bt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},lt=()=>mt,Me=n=>{ut=n},ft=()=>ut;var Oe={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var j=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ge(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let l=await d(c),f=l.data.infos?.info||[];if(Ae(l),Me(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let h=f.find(({type:b})=>b==="ERROR");if(h)throw new v(h.value,h.id,l.config,l.request,l)}return l}catch(l){let f=l,h=f.response,b=h?.data?.infos?.info||[];if(Ae(h||null),Me(b),l.isAxiosError){let L=l.message;if(h?.data&&b.length>0){let $=b.find(({type:B})=>B==="ERROR");$&&(L=$.value)}throw new v(L,f.code,f.config,f.request,f.response)}throw l}};var Tt=(n,e,o,t)=>j(n,"get",e,o,t),Pt=(n,e,o,t)=>j(n,"post",e,o,t),gt=(n,e,o,t)=>j(n,"delete",e,o,t);var cn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return lt()},getInfo(){return ft()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return j(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=cn;var yt=";",Dt="=",D=n=>Object.keys(n).map(e=>`${e}${Dt}${String(n[e])}`).join(yt),Et=n=>{let e={};return n.split(yt).forEach(o=>{let[t,i]=o.split(Dt);e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var vt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,h){return Reflect.set(d,l,f,h)},getPrototypeOf(){return vt.prototype||null}})},y=vt;var k=u.Bundle.ENDPOINT_PATH,dn=u.Bundle.ENDPOINT_OBTAIN_PATH,ye=u.Bundle.TYPE,mn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${k}/${e}`,{},o)).data.items?.item.find(s=>s.type===ye);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,k,t,o)).data.items,c=s?.item.filter(d=>d.type===ye).map(d=>R(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,k,e.serialize(),o)).data.items?.item.find(s=>s.type===ye);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${k}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ye);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${k}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${k}/${e}/${dn}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>I(l))||[]}},ht=mn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},De=()=>new we;var _=u.Licensee.ENDPOINT_PATH,un=u.Licensee.ENDPOINT_PATH_VALIDATE,pn=u.Licensee.ENDPOINT_PATH_TRANSFER,Ee=u.Licensee.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ee);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_,t,o)).data.items,c=s?.item.filter(d=>d.type===Ee).map(d=>C(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===Ee);return C(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ee);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let h=o.licenseeProperties;Object.keys(h).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let b=o.getParameters();Object.keys(b).forEach((L,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=L;let B=b[L];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${un}`,i,t),c=De(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${pn}`,i,t)}},Nt=ln;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,J,t,o)).data.items,c=s?.item.filter(d=>d.type===ve).map(d=>I(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,J,c,s)).data.items?.item.find(f=>f.type===ve);return I(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(l=>l.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},It=fn;var Q=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Q,t,o)).data.items,c=s?.item.filter(d=>d.type===he).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Q,i,t)).data.items?.item.find(d=>d.type===he);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},bt=Tn;var W=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,W,t,o)).data.items,c=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,W,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Lt=Pn;var Ue=u.PaymentMethod.ENDPOINT_PATH,Ve=u.PaymentMethod.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ve);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Ue,t,o)).data.items,c=s?.item.filter(d=>d.type===Ve).map(d=>U(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ve);return U(s)}},Rt=gn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,X,t,o)).data.items,c=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},Ct=yn;var Z=u.Product.ENDPOINT_PATH,be=u.Product.TYPE,Dn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===be);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Z,t,o)).data.items,c=s?.item.filter(d=>d.type===be).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===be);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===be);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},xt=Dn;var Le=u.Token.ENDPOINT_PATH,je=u.Token.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Le}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return V(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Le,t,o)).data.items,c=s?.item.filter(d=>d.type===je).map(d=>V(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,Le,e.serialize(),o)).data.items?.item.find(s=>s.type===je);return V(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Le}/${e}`,{forceCascade:!!o},t)}},St=En;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,vn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Re,t,o)).data.items,c=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ce);return O(s)}},At=vn;var ke=u.Utility.ENDPOINT_PATH,hn={async listLicenseTypes(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${ke}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>re(f));return y(l||[],c)}},Mt=hn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},Ot=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},_t=()=>new Be; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index 48b0b42..e77b065 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\nimport Constants from '@/constants';\nimport ApiKeyRole from '@/constants/ApiKeyRole';\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\nimport LicenseType from '@/constants/LicenseType';\nimport LicensingModel from '@/constants/LicensingModel';\nimport NodeSecretMode from '@/constants/NodeSecretMode';\nimport NotificationEvent from '@/constants/NotificationEvent';\nimport NotificationProtocol from '@/constants/NotificationProtocol';\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\nimport SecurityMode from '@/constants/SecurityMode';\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\nimport TokenType from '@/constants/TokenType';\nimport TransactionSource from '@/constants/TransactionSource';\nimport TransactionStatus from '@/constants/TransactionStatus';\n\n// converters\nimport itemToBundle from '@/converters/itemToBundle';\nimport itemToCountry from '@/converters/itemToCountry';\nimport itemToLicense from '@/converters/itemToLicense';\nimport itemToLicensee from '@/converters/itemToLicensee';\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\nimport itemToNotification from '@/converters/itemToNotification';\nimport itemToObject from '@/converters/itemToObject';\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\nimport itemToProduct from '@/converters/itemToProduct';\nimport itemToProductModule from '@/converters/itemToProductModule';\nimport itemToToken from '@/converters/itemToToken';\nimport itemToTransaction from '@/converters/itemToTransaction';\n\n// entities\nimport Bundle from '@/entities/Bundle';\nimport Country from '@/entities/Country';\nimport defineEntity from '@/entities/defineEntity';\nimport License from '@/entities/License';\nimport Licensee from '@/entities/Licensee';\nimport LicenseTemplate from '@/entities/LicenseTemplate';\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\nimport Notification from '@/entities/Notification';\nimport PaymentMethod from '@/entities/PaymentMethod';\nimport Product from '@/entities/Product';\nimport ProductDiscount from '@/entities/ProductDiscount';\nimport ProductModule from '@/entities/ProductModule';\nimport Token from '@/entities/Token';\nimport Transaction from '@/entities/Transaction';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// services\nimport BundleService from '@/services/BundleService';\nimport LicenseeService from '@/services/LicenseeService';\nimport LicenseService from '@/services/LicenseService';\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\nimport NotificationService from '@/services/NotificationService';\nimport PaymentMethodService from '@/services/PaymentMethodService';\nimport ProductModuleService from '@/services/ProductModuleService';\nimport ProductService from '@/services/ProductService';\nimport Service from '@/services/Service';\nimport TokenService from '@/services/TokenService';\nimport TransactionService from '@/services/TransactionService';\nimport UtilityService from '@/services/UtilityService';\n\n// utils\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\nimport serialize from '@/utils/serialize';\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\n\n// value object\nimport Context from '@/vo/Context';\nimport Page from '@/vo/Page';\nimport ValidationParameters from '@/vo/ValidationParameters';\nimport ValidationResults from '@/vo/ValidationResults';\n\n// types\nexport type * from '@/types';\n\nexport {\n // constants\n Constants,\n ApiKeyRole,\n LicenseeSecretMode,\n LicenseType,\n LicensingModel,\n NodeSecretMode,\n NotificationEvent,\n NotificationProtocol,\n PaymentMethodEnum,\n SecurityMode,\n TimeVolumePeriod,\n TokenType,\n TransactionSource,\n TransactionStatus,\n\n // converters\n itemToBundle,\n itemToCountry,\n itemToLicense,\n itemToLicensee,\n itemToLicenseTemplate,\n itemToNotification,\n itemToObject,\n itemToPaymentMethod,\n itemToProduct,\n itemToProductModule,\n itemToToken,\n itemToTransaction,\n\n // entities\n Bundle,\n Country,\n defineEntity,\n License,\n Licensee,\n LicenseTemplate,\n LicenseTransactionJoin,\n Notification,\n PaymentMethod,\n Product,\n ProductDiscount,\n ProductModule,\n Token,\n Transaction,\n\n // errors\n NlicError,\n\n // services\n BundleService,\n LicenseeService,\n LicenseService,\n LicenseTemplateService,\n NotificationService,\n PaymentMethodService,\n ProductModuleService,\n ProductService,\n Service,\n TokenService,\n TransactionService,\n UtilityService,\n\n // utils\n filterEncode,\n filterDecode,\n serialize,\n isValid,\n isDefined,\n ensureNotNull,\n ensureNotEmpty,\n\n // vo\n Context,\n Page,\n ValidationParameters,\n ValidationResults,\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseeSecretMode = Object.freeze({\n // @deprecated\n DISABLED: 'DISABLED',\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default LicenseeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseType = Object.freeze({\n FEATURE: 'FEATURE',\n TIMEVOLUME: 'TIMEVOLUME',\n FLOATING: 'FLOATING',\n QUANTITY: 'QUANTITY',\n});\n\nexport default LicenseType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationEvent = Object.freeze({\n LICENSEE_CREATED: 'LICENSEE_CREATED',\n LICENSE_CREATED: 'LICENSE_CREATED',\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\n});\n\nexport default NotificationEvent;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationProtocol = Object.freeze({\n WEBHOOK: 'WEBHOOK',\n});\n\nexport default NotificationProtocol;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst SecurityMode = Object.freeze({\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n APIKEY_IDENTIFICATION: 'APIKEY',\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n});\n\nexport default SecurityMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TimeVolumePeriod = Object.freeze({\n DAY: 'DAY',\n WEEK: 'WEEK',\n MONTH: 'MONTH',\n YEAR: 'YEAR',\n});\n\nexport default TimeVolumePeriod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TokenType = Object.freeze({\n DEFAULT: 'DEFAULT',\n SHOP: 'SHOP',\n APIKEY: 'APIKEY',\n ACTION: 'ACTION',\n});\n\nexport default TokenType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionSource = Object.freeze({\n SHOP: 'SHOP',\n\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\n\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\n\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\n\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\n\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\n\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\n\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\n\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\n\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\n\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\n});\n\nexport default TransactionSource;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionStatus = Object.freeze({\n PENDING: 'PENDING',\n CLOSED: 'CLOSED',\n CANCELLED: 'CANCELLED',\n});\n\nexport default TransactionStatus;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\nimport LicenseType from '@/constants/LicenseType';\nimport NotificationEvent from '@/constants/NotificationEvent';\nimport NotificationProtocol from '@/constants/NotificationProtocol';\nimport SecurityMode from '@/constants/SecurityMode';\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\nimport TokenType from '@/constants/TokenType';\nimport TransactionSource from '@/constants/TransactionSource';\nimport TransactionStatus from '@/constants/TransactionStatus';\n\nexport default {\n LicenseeSecretMode,\n LicenseType,\n NotificationEvent,\n NotificationProtocol,\n SecurityMode,\n TimeVolumePeriod,\n TokenType,\n TransactionSource,\n TransactionStatus,\n\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\n APIKEY_IDENTIFICATION: 'APIKEY',\n\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n\n FILTER: 'filter',\n\n Product: {\n TYPE: 'Product',\n ENDPOINT_PATH: 'product',\n },\n\n ProductModule: {\n TYPE: 'ProductModule',\n ENDPOINT_PATH: 'productmodule',\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\n },\n\n Licensee: {\n TYPE: 'Licensee',\n ENDPOINT_PATH: 'licensee',\n ENDPOINT_PATH_VALIDATE: 'validate',\n ENDPOINT_PATH_TRANSFER: 'transfer',\n LICENSEE_NUMBER: 'licenseeNumber',\n },\n\n LicenseTemplate: {\n TYPE: 'LicenseTemplate',\n ENDPOINT_PATH: 'licensetemplate',\n\n // @deprecated use LicenseType directly instead\n LicenseType,\n },\n\n License: {\n TYPE: 'License',\n ENDPOINT_PATH: 'license',\n },\n\n Validation: {\n TYPE: 'ProductModuleValidation',\n },\n\n Token: {\n TYPE: 'Token',\n ENDPOINT_PATH: 'token',\n\n // @deprecated use TokenType directly instead\n Type: TokenType,\n },\n\n PaymentMethod: {\n TYPE: 'PaymentMethod',\n ENDPOINT_PATH: 'paymentmethod',\n },\n\n Bundle: {\n TYPE: 'Bundle',\n ENDPOINT_PATH: 'bundle',\n ENDPOINT_OBTAIN_PATH: 'obtain',\n },\n\n Notification: {\n TYPE: 'Notification',\n ENDPOINT_PATH: 'notification',\n\n // @deprecated use NotificationProtocol directly instead\n Protocol: NotificationProtocol,\n\n // @deprecated use NotificationEvent directly instead\n Event: NotificationEvent,\n },\n\n Transaction: {\n TYPE: 'Transaction',\n ENDPOINT_PATH: 'transaction',\n\n // @deprecated use TransactionStatus directly instead\n Status: TransactionStatus,\n },\n\n Utility: {\n ENDPOINT_PATH: 'utility',\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\n ENDPOINT_PATH_COUNTRIES: 'countries',\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\n LICENSE_TYPE: 'LicenseType',\n COUNTRY_TYPE: 'Country',\n },\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst ApiKeyRole = Object.freeze({\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\n});\n\nexport default ApiKeyRole;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicensingModel = Object.freeze({\n TRY_AND_BUY: 'TryAndBuy',\n SUBSCRIPTION: 'Subscription',\n RENTAL: 'Rental',\n FLOATING: 'Floating',\n MULTI_FEATURE: 'MultiFeature',\n PAY_PER_USE: 'PayPerUse',\n PRICING_TABLE: 'PricingTable',\n QUOTA: 'Quota',\n NODE_LOCKED: 'NodeLocked',\n DISCOUNT: 'Discount',\n});\n\nexport default LicensingModel;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NodeSecretMode = Object.freeze({\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default NodeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst PaymentMethodEnum = Object.freeze({\n NULL: 'NULL',\n PAYPAL: 'PAYPAL',\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\n STRIPE: 'STRIPE',\n STRIPE_TESTING: 'STRIPE_TESTING',\n});\n\nexport default PaymentMethodEnum;\n","import { Item, List } from '@/types/api/response';\n\nconst cast = (value: string): unknown => {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n};\n\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\n const result: Record = {};\n properties?.forEach(({ name, value }) => {\n result[name] = cast(value);\n });\n return result;\n};\n\nconst extractLists = (lists?: List[]) => {\n const result: Record = {};\n\n lists?.forEach((list) => {\n const { name } = list;\n result[name] = result[name] || [];\n result[name].push(itemToObject(list));\n });\n return result;\n};\n\nconst itemToObject = >(item?: Item | List): T => {\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\n};\n\nexport default itemToObject;\n","export const has = (obj: T, key: K): boolean => {\n return Object.hasOwn(obj, key);\n};\n\nexport const set = (obj: T, key: K, value: T[K]): void => {\n obj[key] = value;\n};\n\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\n return has(obj, key) ? obj[key] : (def as D);\n};\n\nexport default {\n has,\n set,\n get,\n};\n","/**\n * Converts an object into a map of type Record, where the value of each object property is converted\n * to a string.\n * If the property's value is `undefined`, it will be replaced with an empty string.\n * If the value is already a string, it will remain unchanged.\n * If the value is Date instance, it wll be replaced with an ISO format date string.\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\n * If serialization fails, the value will be converted to a string using `String()`.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n * @param obj - The object to be converted into a map.\n * @param options\n * @returns A map (Record) with converted property values from the object.\n */\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\n const map: Record = {};\n\n const { ignore = [] } = options;\n\n Object.entries(obj).forEach(([k, v]) => {\n // ignore keys\n if (ignore.includes(k)) {\n return;\n }\n\n if (typeof v === 'function') {\n // ignore functions\n return;\n } else if (v === undefined) {\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\n } else if (typeof v === 'string') {\n map[k] = v; // If the value is already a string, leave it unchanged\n } else if (v instanceof Date) {\n // if the value is Date, convert it to ISO string\n map[k] = v.toISOString();\n } else if (typeof v !== 'object' || v === null) {\n // If it's not an object (or is null), convert it to string\n map[k] = String(v);\n } else {\n // Try to serialize the object or array into JSON\n try {\n map[k] = JSON.stringify(v);\n } catch {\n map[k] = String(v);\n }\n }\n });\n\n return map;\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type {\n Entity,\n EntityMethods,\n Proto,\n PropGetEventListener,\n PropSetEventListener,\n} from '@/types/entities/defineEntity';\n\n// utils\nimport { set, has, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst defineEntity = function

(\n props: T,\n methods: M,\n proto: P = {} as P,\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\n) {\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\n set: [],\n get: [],\n };\n\n if (options?.get) {\n listeners.get.push(options.get);\n }\n\n if (options?.set) {\n listeners.set.push(options.set);\n }\n\n const base: EntityMethods = {\n set(this: void, key, value): void {\n set(props, key, value);\n },\n\n get(this: void, key, def) {\n return get(props, key, def);\n },\n\n has(this: void, key) {\n return has(props, key);\n },\n\n // Aliases\n setProperty(key, value) {\n this.set(key, value);\n },\n\n addProperty(key, value) {\n this.set(key, value);\n },\n\n getProperty(key, def) {\n return this.get(key, def);\n },\n\n hasProperty(key) {\n return this.has(key);\n },\n\n setProperties(properties) {\n Object.entries(properties).forEach(([k, v]) => {\n this.set(k as keyof T, v as T[keyof T]);\n });\n },\n\n serialize(this: void) {\n return serialize(props);\n },\n };\n\n return new Proxy(props, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(methods, prop)) {\n return methods[prop as keyof typeof methods];\n }\n\n if (Object.hasOwn(base, prop)) {\n return base[prop as keyof typeof base];\n }\n\n listeners.get.forEach((l) => {\n l(obj, prop, receiver);\n });\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n listeners.set.forEach((l) => {\n l(obj, prop, value, receiver);\n });\n\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return proto.prototype || null;\n },\n }) as Entity;\n};\n\nexport default defineEntity;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// types\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * NetLicensing Bundle entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the bundle is disabled.\n * @property boolean active\n *\n * Bundle name.\n * @property string name\n *\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the bundle price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * The bundle includes a set of templates, each identified by a unique template number.\n * @property string[] licenseTemplateNumbers\n *\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\n const props: BundleProps = { ...properties };\n\n const methods: BundleMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string) {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\n set(props, 'licenseTemplateNumbers', numbers);\n },\n\n addLicenseTemplateNumber(this: void, number: string): void {\n if (!props.licenseTemplateNumbers) {\n props.licenseTemplateNumbers = [];\n }\n\n props.licenseTemplateNumbers.push(number);\n },\n\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\n },\n\n removeLicenseTemplateNumber(this: void, number: string): void {\n const { licenseTemplateNumbers: numbers = [] } = props;\n\n numbers.splice(numbers.indexOf(number), 1);\n props.licenseTemplateNumbers = numbers;\n },\n\n serialize(this: void): Record {\n if (props.licenseTemplateNumbers) {\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\n return serialize({ ...props, licenseTemplateNumbers });\n }\n\n return serialize(props);\n },\n };\n\n return defineEntity(props as BundleProps, methods, Bundle);\n};\n\nexport default Bundle;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Bundle from '@/entities/Bundle';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { BundleProps } from '@/types/entities/Bundle';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { licenseTemplateNumbers } = props;\n\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\n }\n\n return Bundle(props as BundleProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * Country entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * @property code - Unique code of country.\n * @property name - Unique name of country\n * @property vatPercent - Country vat.\n * @property isEu - is country in EU.\n */\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\n const defaults: CountryProps = {\n code: '',\n name: '',\n vatPercent: 0,\n isEu: false,\n };\n\n const props: CountryProps = { ...defaults, ...properties };\n\n const methods: CountryMethods = {\n getCode(this: void): string {\n return props.code;\n },\n\n getName(this: void): string {\n return props.name;\n },\n\n getVatPercent(this: void): number {\n return props.vatPercent as number;\n },\n\n getIsEu(this: void): boolean {\n return props.isEu;\n },\n };\n\n return defineEntity(props, methods, Country);\n};\n\nexport default Country;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport Country from '@/entities/Country';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { CountryProps } from '@/types/entities/Country';\n\nexport default (item?: Item) => Country(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n // TimeVolume\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setStartDate(this: void, startDate: Date | 'now'): void {\n set(props, 'startDate', startDate);\n },\n\n getStartDate(this: void, def?: D): Date | 'now' | D {\n return get(props, 'startDate', def) as Date | 'now' | D;\n },\n\n // Rental\n setParentfeature(this: void, parentfeature?: string): void {\n set(props, 'parentfeature', parentfeature);\n },\n\n getParentfeature(this: void, def?: D): string | D {\n return get(props, 'parentfeature', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport License from '@/entities/License';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseProps } from '@/types/entities/License';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { startDate } = props;\n\n if (startDate && typeof startDate === 'string') {\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\n }\n\n return License(props as LicenseProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Licensee entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\n * the licensee.\n * @property string number\n *\n * Licensee name.\n * @property string name\n *\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\n * disabled (tbd).\n * @property boolean active\n *\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\n * @property string licenseeSecret\n *\n * Mark licensee for transfer.\n * @property boolean markedForTransfer\n *\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\n */\n\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\n const props: LicenseeProps = { ...properties };\n\n const methods: LicenseeMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProductNumber(this: void, number: string): void {\n set(props, 'productNumber', number);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setMarkedForTransfer(this: void, mark: boolean): void {\n set(props, 'markedForTransfer', mark);\n },\n\n getMarkedForTransfer(this: void, def?: D): boolean | D {\n return get(props, 'markedForTransfer', def) as boolean | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseeProps, methods, Licensee);\n};\n\nexport default Licensee;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Licensee from '@/entities/Licensee';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseeProps } from '@/types/entities/Licensee';\n\nexport default (item?: Item) => Licensee(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * License template entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\n * assign this number when creating a license template or let NetLicensing generate one.\n * Read-only after creation of the first license from this license template.\n * @property string number\n *\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\n * license template.\n * @property boolean active\n *\n * Name for the licensed item.\n * @property string name\n *\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\n * \"FLOATING\", \"QUANTITY\"\n * @property string licenseType\n *\n * Price for the license. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the license price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * If set to true, every new licensee automatically gets one license out of this license template on\n * creation. Automatic licenses must have their price set to 0.\n * @property boolean automatic\n *\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\n * @property boolean hidden\n *\n * If set to true, licenses from this license template are not visible to the end customer, but\n * participate in validation.\n * @property boolean hideLicenses\n *\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\n * @property boolean gracePeriod\n *\n * Mandatory for 'TIMEVOLUME' license type.\n * @property number timeVolume\n *\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\n * @property string timeVolumePeriod\n *\n * Mandatory for 'FLOATING' license type.\n * @property number maxSessions\n *\n * Mandatory for 'QUANTITY' license type.\n * @property number quantity\n */\n\nconst LicenseTemplate = function (\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\n): LicenseTemplateEntity {\n const props: LicenseTemplateProps = { ...properties };\n\n const methods: LicenseTemplateMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicenseType(this: void, type: LicenseTypeValues): void {\n set(props, 'licenseType', type);\n },\n\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAutomatic(this: void, automatic: boolean): void {\n set(props, 'automatic', automatic);\n },\n\n getAutomatic(this: void, def?: D): boolean | D {\n return get(props, 'automatic', def) as boolean | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setHideLicenses(this: void, hideLicenses: boolean): void {\n set(props, 'hideLicenses', hideLicenses);\n },\n\n getHideLicenses(this: void, def?: D): boolean | D {\n return get(props, 'hideLicenses', def) as boolean | D;\n },\n\n setGracePeriod(this: void, gradePeriod: boolean): void {\n set(props, 'gracePeriod', gradePeriod);\n },\n\n getGracePeriod(this: void, def?: D): boolean | D {\n return get(props, 'gracePeriod', def) as boolean | D;\n },\n\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setMaxSessions(this: void, maxSessions: number): void {\n set(props, 'maxSessions', maxSessions);\n },\n\n getMaxSessions(this: void, def?: D): number | D {\n return get(props, 'maxSessions', def) as number | D;\n },\n\n setQuantity(this: void, quantity: number): void {\n set(props, 'quantity', quantity);\n },\n\n getQuantity(this: void, def?: D): number | D {\n return get(props, 'quantity', def) as number | D;\n },\n\n setProductModuleNumber(this: void, productModuleNumber: string): void {\n set(props, 'productModuleNumber', productModuleNumber);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\n};\n\nexport default LicenseTemplate;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport LicenseTemplate from '@/entities/LicenseTemplate';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\n\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\n\n// types\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Notification entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\n * @property boolean active\n *\n * Notification name.\n * @property string name\n *\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\n * @property float type\n *\n * Comma separated string of events that fire the notification when emitted.\n * @property string events\n *\n * Notification response payload.\n * @property string payload\n *\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\n * @property string url\n *\n * Arbitrary additional user properties of string type may be associated with each notification.\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\n * deleted.\n */\n\nconst Notification = function (\n properties: NotificationProps = {} as NotificationProps,\n): NotificationEntity {\n const props: NotificationProps = { ...properties };\n\n const methods: NotificationMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\n set(props, 'protocol', protocol);\n },\n\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\n },\n\n setEvents(this: void, events: NotificationEventValues[]): void {\n set(props, 'events', events);\n },\n\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\n return get(props, 'events', def) as NotificationEventValues[] | D;\n },\n\n addEvent(event: NotificationEventValues): void {\n const events = this.getEvents([]) as NotificationEventValues[];\n events.push(event);\n\n this.setEvents(events);\n },\n\n setPayload(this: void, payload: string): void {\n set(props, 'payload', payload);\n },\n\n getPayload(this: void, def?: D): string | D {\n return get(props, 'payload', def) as string | D;\n },\n\n setEndpoint(this: void, endpoint: string): void {\n set(props, 'endpoint', endpoint);\n },\n\n getEndpoint(this: void, def?: D): string | D {\n return get(props, 'endpoint', def) as string | D;\n },\n\n serialize(): Record {\n const data = serialize(props);\n\n if (data.events) {\n data.events = this.getEvents([]).join(',');\n }\n\n return data;\n },\n };\n\n return defineEntity(props as NotificationProps, methods, Notification);\n};\n\nexport default Notification;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Notification from '@/entities/Notification';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { NotificationProps } from '@/types/entities/Notification';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { events } = props;\n\n if (events && typeof events === 'string') {\n props.events = events.split(',');\n }\n\n return Notification(props as NotificationProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\n/**\n * PaymentMethod entity used internally by NetLicensing.\n *\n * @property string number\n * @property boolean active\n * @property string paypal.subject\n */\nconst PaymentMethod = function (\n properties: PaymentMethodProps = {} as PaymentMethodProps,\n): PaymentMethodEntity {\n const props: PaymentMethodProps = { ...properties };\n\n const methods: PaymentMethodMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n };\n\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\n};\n\nexport default PaymentMethod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport PaymentMethod from '@/entities/PaymentMethod';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\n\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Product entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\n * @property string number\n *\n * If set to false, the product is disabled. No new licensees can be registered for the product,\n * existing licensees can not obtain new licenses.\n * @property boolean active\n *\n * Product name. Together with the version identifies the product for the end customer.\n * @property string name\n *\n * Product version. Convenience parameter, additional to the product name.\n * @property string version\n *\n * If set to 'true', non-existing licensees will be created at first validation attempt.\n * @property boolean licenseeAutoCreate\n *\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\n * @property boolean licenseeSecretMode\n *\n * Product description. Optional.\n * @property string description\n *\n * Licensing information. Optional.\n * @property string licensingInfo\n *\n * @property boolean inUse\n *\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Product = function (\n properties: ProductProps = {} as ProductProps,\n): ProductEntity {\n const props: ProductProps = { ...properties };\n\n const methods: ProductMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setVersion(this: void, version: string): void {\n set(props, 'version', version);\n },\n\n getVersion(this: void, def?: D): string | number | D {\n return get(props, 'version', def) as string | number | D;\n },\n\n setDescription(this: void, description: string): void {\n set(props, 'description', description);\n },\n\n getDescription(this: void, def?: D): string | D {\n return get(props, 'description', def) as string | D;\n },\n\n setLicensingInfo(this: void, licensingInfo: string): void {\n set(props, 'licensingInfo', licensingInfo);\n },\n\n getLicensingInfo(this: void, def?: D): string | D {\n return get(props, 'licensingInfo', def) as string | D;\n },\n\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\n },\n\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\n },\n\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\n set(props, 'discounts', discounts);\n },\n\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\n },\n\n addDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\n discounts.push(discount);\n\n this.setDiscounts(discounts);\n },\n\n removeDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts();\n\n if (Array.isArray(discounts) && discounts.length > 0) {\n discounts.splice(discounts.indexOf(discount), 1);\n this.setDiscounts(discounts);\n }\n },\n\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\n this.setDiscounts(productDiscounts);\n },\n\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\n return this.getDiscounts(def);\n },\n\n serialize(): Record {\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\n const discounts = this.getDiscounts();\n\n if (discounts) {\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\n }\n\n return map;\n },\n };\n\n return defineEntity(props as ProductProps, methods, Product);\n};\n\nexport default Product;\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\nexport default class NlicError extends AxiosError {\n isNlicError = true;\n\n constructor(\n message?: string,\n code?: string,\n config?: InternalAxiosRequestConfig,\n request?: unknown,\n response?: AxiosResponse,\n stack?: string,\n ) {\n super(message, code, config, request, response);\n this.name = 'NlicError';\n\n if (stack) {\n this.stack = stack;\n }\n\n Object.setPrototypeOf(this, NlicError.prototype);\n }\n}\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\nconst ProductDiscount = function (\n properties: ProductDiscountProps = {} as ProductDiscountProps,\n): ProductDiscountEntity {\n const props: ProductDiscountProps = { ...properties };\n\n if (props.amountFix && props.amountPercent) {\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\n }\n\n const methods: ProductDiscountMethods = {\n setTotalPrice(this: void, totalPrice: number): void {\n set(props, 'totalPrice', totalPrice);\n },\n\n getTotalPrice(this: void, def?: D): number | D {\n return get(props, 'totalPrice', def) as number | D;\n },\n\n setCurrency(currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAmountFix(this: void, amountFix: number): void {\n set(props, 'amountFix', amountFix);\n },\n\n getAmountFix(this: void, def?: D): number | D {\n return get(props, 'amountFix', def) as number | D;\n },\n\n setAmountPercent(this: void, amountPercent: number): void {\n set(props, 'amountPercent', amountPercent);\n },\n\n getAmountPercent(this: void, def?: D): number | D {\n return get(props, 'amountPercent', def) as number | D;\n },\n\n toString() {\n const total = this.getTotalPrice();\n const currency = this.getCurrency();\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\n\n return total && currency && amount ? `${total};${currency};${amount}` : '';\n },\n };\n\n return defineEntity(props, methods, ProductDiscount, {\n set: (obj, prop) => {\n if (prop === 'amountFix') {\n delete obj.amountPercent;\n }\n\n if (prop === 'amountPercent') {\n delete obj.amountFix;\n }\n },\n });\n};\n\nexport default ProductDiscount;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Product from '@/entities/Product';\nimport ProductDiscount from '@/entities/ProductDiscount';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductProps } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\n delete props.discount;\n\n if (discounts) {\n props.discounts = discounts.map((d) => ProductDiscount(d));\n }\n\n return Product(props as ProductProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\n\n// types\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Product module entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\n * licensee for the product.\n * @property string number\n *\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\n * product module.\n * @property boolean active\n *\n * Product module name that is visible to the end customers in NetLicensing Shop.\n * @property string name\n *\n * Licensing model applied to this product module. Defines what license templates can be\n * configured for the product module and how licenses for this product module are processed during validation.\n * @property string licensingModel\n *\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\n * @property number maxCheckoutValidity\n *\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\n * @property number yellowThreshold\n *\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\n * @property number redThreshold\n */\n\nconst ProductModule = function (\n properties: ProductModuleProps = {} as ProductModuleProps,\n): ProductModuleEntity {\n const props: ProductModuleProps = { ...properties };\n\n const methods: ProductModuleMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicensingModel(licensingModel: LicensingModelValues): void {\n set(props, 'licensingModel', licensingModel);\n },\n\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\n },\n\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\n },\n\n getMaxCheckoutValidity(this: void, def?: D): number | D {\n return get(props, 'maxCheckoutValidity', def) as number | D;\n },\n\n setYellowThreshold(this: void, yellowThreshold: number): void {\n set(props, 'yellowThreshold', yellowThreshold);\n },\n\n getYellowThreshold(this: void, def?: D): number | D {\n return get(props, 'yellowThreshold', def) as number | D;\n },\n\n setRedThreshold(this: void, redThreshold: number): void {\n set(props, 'redThreshold', redThreshold);\n },\n\n getRedThreshold(this: void, def?: D): number | D {\n return get(props, 'redThreshold', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\n};\n\nexport default ProductModule;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport ProductModule from '@/entities/ProductModule';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\n\nexport default (item?: Item) => ProductModule(itemToObject(item));\n","/**\n * Token\n *\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\nimport { TokenTypeValues } from '@/types/constants/TokenType';\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\n const props: TokenProps = { ...properties };\n\n const methods: TokenMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setExpirationTime(this: void, expirationTime: Date): void {\n set(props, 'expirationTime', expirationTime);\n },\n\n getExpirationTime(this: void, def?: D): Date | D {\n return get(props, 'expirationTime', def) as Date | D;\n },\n\n setTokenType(this: void, tokenType: TokenTypeValues): void {\n set(props, 'tokenType', tokenType);\n },\n\n getTokenType(this: void, def?: D): TokenTypeValues | D {\n return get(props, 'tokenType', def) as TokenTypeValues | D;\n },\n\n setLicenseeNumber(this: void, licenseeNumber: string): void {\n set(props, 'licenseeNumber', licenseeNumber);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setAction(this: void, action: string): void {\n set(props, 'action', action);\n },\n\n getAction(this: void, def?: D): string | D {\n return get(props, 'action', def) as string | D;\n },\n\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\n set(props, 'apiKeyRole', apiKeyRole);\n },\n\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\n },\n\n setBundleNumber(this: void, bundleNumber: string): void {\n set(props, 'bundleNumber', bundleNumber);\n },\n\n getBundleNumber(this: void, def?: D): string | D {\n return get(props, 'bundleNumber', def) as string | D;\n },\n\n setBundlePrice(this: void, bundlePrice: number): void {\n set(props, 'bundlePrice', bundlePrice);\n },\n\n getBundlePrice(this: void, def?: D): number | D {\n return get(props, 'bundlePrice', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\n },\n\n getPredefinedShoppingItem(this: void, def?: D): string | D {\n return get(props, 'predefinedShoppingItem', def) as string | D;\n },\n\n setSuccessURL(this: void, successURL: string): void {\n set(props, 'successURL', successURL);\n },\n\n getSuccessURL(this: void, def?: D): string | D {\n return get(props, 'successURL', def) as string | D;\n },\n\n setSuccessURLTitle(this: void, successURLTitle: string): void {\n set(props, 'successURLTitle', successURLTitle);\n },\n\n getSuccessURLTitle(this: void, def?: D): string | D {\n return get(props, 'successURLTitle', def) as string | D;\n },\n\n setCancelURL(this: void, cancelURL: string): void {\n set(props, 'cancelURL', cancelURL);\n },\n\n getCancelURL(this: void, def?: D): string | D {\n return get(props, 'cancelURL', def) as string | D;\n },\n\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\n set(props, 'cancelURLTitle', cancelURLTitle);\n },\n\n getCancelURLTitle(this: void, def?: D): string | D {\n return get(props, 'cancelURLTitle', def) as string | D;\n },\n\n getShopURL(this: void, def?: D): string | D {\n return get(props, 'shopURL', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['shopURL'] });\n },\n };\n\n return defineEntity(props as TokenProps, methods, Token);\n};\n\nexport default Token;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Token from '@/entities/Token';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TokenProps } from '@/types/entities/Token';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { expirationTime } = props;\n\n if (expirationTime && typeof expirationTime === 'string') {\n props.expirationTime = new Date(expirationTime);\n }\n\n return Token(props as TokenProps);\n};\n","// types\nimport type { LicenseEntity } from '@/types/entities/License';\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\nimport type { TransactionEntity } from '@/types/entities/Transaction';\n\n/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\n transaction: TransactionEntity;\n license: LicenseEntity;\n\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\n this.transaction = transaction;\n this.license = license;\n }\n\n setTransaction(transaction: TransactionEntity): void {\n this.transaction = transaction;\n }\n\n getTransaction(): TransactionEntity {\n return this.transaction;\n }\n\n setLicense(license: LicenseEntity): void {\n this.license = license;\n }\n\n getLicense(): LicenseEntity {\n return this.license;\n }\n}\n\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\n new LicenseTransactionJoin(transaction, license);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Transaction entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\n * always generated by NetLicensing.\n * @property string number\n *\n * always true for transactions\n * @property boolean active\n *\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\n * @property string status\n *\n * \"SHOP\". AUTO transaction for internal use only.\n * @property string source\n *\n * grand total for SHOP transaction (see source).\n * @property number grandTotal\n *\n * discount for SHOP transaction (see source).\n * @property number discount\n *\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\n * @property string currency\n *\n * Date created. Optional.\n * @property string dateCreated\n *\n * Date closed. Optional.\n * @property string dateClosed\n */\n\nconst Transaction = function (\n properties: TransactionProps = {} as TransactionProps,\n): TransactionEntity {\n const props: TransactionProps = { ...properties };\n\n const methods: TransactionMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setStatus(this: void, status: TransactionStatusValues): void {\n set(props, 'status', status);\n },\n\n getStatus(this: void, def?: D): TransactionStatusValues | D {\n return get(props, 'status', def) as TransactionStatusValues | D;\n },\n\n setSource(this: void, source: TransactionSourceValues): void {\n set(props, 'source', source);\n },\n getSource(this: void, def?: D): TransactionSourceValues | D {\n return get(props, 'source', def) as TransactionSourceValues | D;\n },\n setGrandTotal(this: void, grandTotal: number): void {\n set(props, 'grandTotal', grandTotal);\n },\n getGrandTotal(this: void, def?: D): number | D {\n return get(props, 'grandTotal', def) as number | D;\n },\n\n setDiscount(this: void, discount: number): void {\n set(props, 'discount', discount);\n },\n\n getDiscount(this: void, def?: D): number | D {\n return get(props, 'discount', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setDateCreated(this: void, dateCreated: Date): void {\n set(props, 'dateCreated', dateCreated);\n },\n\n getDateCreated(this: void, def?: D): Date | D {\n return get(props, 'dateCreated', def) as Date | D;\n },\n\n setDateClosed(this: void, dateCreated: Date): void {\n set(props, 'dateClosed', dateCreated);\n },\n\n getDateClosed(this: void, def?: D): Date | D {\n return get(props, 'dateClosed', def) as Date | D;\n },\n\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\n set(props, 'paymentMethod', paymentMethod);\n },\n\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\n },\n\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\n set(props, 'licenseTransactionJoins', joins);\n },\n\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\n },\n\n serialize(this: void) {\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\n },\n };\n\n return defineEntity(props as TransactionProps, methods, Transaction);\n};\n\nexport default Transaction;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport License from '@/entities/License';\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\nimport Transaction from '@/entities/Transaction';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TransactionProps } from '@/types/entities/Transaction';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { dateCreated, dateClosed } = props;\n\n if (dateCreated && typeof dateCreated === 'string') {\n props.dateCreated = new Date(dateCreated);\n }\n\n if (dateClosed && typeof dateClosed === 'string') {\n props.dateClosed = new Date(dateClosed);\n }\n\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\n\n delete props.licenseTransactionJoin;\n\n if (licenseTransactionJoins) {\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\n const transaction = Transaction({ number: transactionNumber });\n const license = License({ number: licenseNumber });\n\n return LicenseTransactionJoin(transaction, license);\n });\n }\n\n return Transaction(props as TransactionProps);\n};\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { Info } from '@/types/api/response';\n\nlet axiosInstance: AxiosInstance = axios.create();\nlet lastResponse: AxiosResponse | null = null;\nlet info: Info[] = [];\n\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\n axiosInstance = instance;\n};\n\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\n\nexport const setLastResponse = (response: AxiosResponse | null): void => {\n lastResponse = response;\n};\n\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\n\nexport const setInfo = (infos: Info[]): void => {\n info = infos;\n};\n\nexport const getInfo = (): Info[] => info;\n","{\n \"name\": \"netlicensing-client\",\n \"version\": \"1.2.39\",\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\n \"keywords\": [\n \"labs64\",\n \"netlicensing\",\n \"licensing\",\n \"licensing-as-a-service\",\n \"license\",\n \"license-management\",\n \"software-license\",\n \"client\",\n \"restful\",\n \"restful-api\",\n \"javascript\",\n \"wrapper\",\n \"api\",\n \"client\"\n ],\n \"license\": \"Apache-2.0\",\n \"author\": \"Labs64 GmbH\",\n \"homepage\": \"https://netlicensing.io\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\n },\n \"contributors\": [\n {\n \"name\": \"Ready Brown\",\n \"email\": \"ready.brown@hotmail.de\",\n \"url\": \"https://github.com/r-brown\"\n },\n {\n \"name\": \"Viacheslav Rudkovskiy\",\n \"email\": \"viachaslau.rudkovski@labs64.de\",\n \"url\": \"https://github.com/v-rudkovskiy\"\n },\n {\n \"name\": \"Andrei Yushkevich\",\n \"email\": \"yushkevich@me.com\",\n \"url\": \"https://github.com/yushkevich\"\n }\n ],\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:dev\": \"vitest watch\",\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\n },\n \"peerDependencies\": {\n \"axios\": \"^1.9.0\"\n },\n \"dependencies\": {},\n \"devDependencies\": {\n \"@eslint/js\": \"^9.24.0\",\n \"@types/node\": \"^22.14.0\",\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\n \"@typescript-eslint/parser\": \"^8.29.1\",\n \"@vitest/eslint-plugin\": \"^1.1.43\",\n \"axios\": \"^1.9.0\",\n \"eslint\": \"^9.24.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"prettier\": \"3.5.3\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"typescript-eslint\": \"^8.29.1\",\n \"vitest\": \"^3.1.1\"\n },\n \"engines\": {\n \"node\": \">= 16.9.0\",\n \"npm\": \">= 8.0.0\"\n },\n \"browserslist\": [\n \"> 1%\",\n \"last 2 versions\",\n \"not ie <= 10\"\n ]\n}\n","export default >(data: T): string => {\n const query: string[] = [];\n\n const build = (obj: unknown, keyPrefix?: string): void => {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item) => {\n build(item, keyPrefix ? `${keyPrefix}` : '');\n });\n\n return;\n }\n\n if (obj instanceof Date) {\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\n return;\n }\n\n if (typeof obj === 'object') {\n Object.keys(obj).forEach((key) => {\n const value = obj[key as keyof typeof obj];\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\n });\n\n return;\n }\n\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\n };\n\n build(data);\n\n return query.join('&');\n};\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\n\n// constants\nimport SecurityMode from '@/constants/SecurityMode';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\n// package.json\nimport pkg from '../../../package.json';\n\n// service\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\nimport toQueryString from './toQueryString';\n\nexport default async (\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => {\n const headers: Record = {\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n // only node.js has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\n }\n\n const req: AxiosRequestConfig = {\n method,\n headers,\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\n responseType: 'json',\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\n return toQueryString(d as Record);\n }\n\n if (!h['NetLicensing-Origin']) {\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\n }\n\n return d;\n },\n };\n\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\n if (req.method === 'post') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n req.data = data;\n } else {\n req.params = data;\n }\n\n switch (context.getSecurityMode()) {\n // Basic Auth\n case SecurityMode.BASIC_AUTHENTICATION:\n {\n if (!context.getUsername()) {\n throw new NlicError('Missing parameter \"username\"');\n }\n\n if (!context.getPassword()) {\n throw new NlicError('Missing parameter \"password\"');\n }\n\n req.auth = {\n username: context.getUsername(),\n password: context.getPassword(),\n };\n }\n break;\n // ApiKey Auth\n case SecurityMode.APIKEY_IDENTIFICATION:\n if (!context.getApiKey()) {\n throw new NlicError('Missing parameter \"apiKey\"');\n }\n\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\n break;\n // without authorization\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\n break;\n default:\n throw new NlicError('Unknown security mode');\n }\n\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\n\n try {\n const response: AxiosResponse = await instance(req);\n const info = response.data.infos?.info || [];\n\n setLastResponse(response);\n setInfo(info);\n\n if (config?.onResponse) {\n config.onResponse(response);\n }\n\n if (info.length > 0) {\n if (config?.onInfo) {\n config.onInfo(info);\n }\n\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\n }\n }\n\n return response;\n } catch (e) {\n const error = e as AxiosError;\n\n const response = error.response;\n const info = (response?.data as NlicResponse)?.infos?.info || [];\n\n setLastResponse(response || null);\n setInfo(info);\n\n if ((e as AxiosError).isAxiosError) {\n let message = (e as AxiosError).message;\n\n if (response?.data && info.length > 0) {\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n message = eInfo.value;\n }\n }\n\n throw new NlicError(\n message,\n error.code,\n error.config,\n error.request,\n error.response as AxiosResponse,\n );\n }\n\n throw e;\n }\n};\n","import type { AxiosResponse } from 'axios';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ContextInstance } from '@/types/vo/Context';\n\n// service\nimport request from './request';\n\nexport const get = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'get', endpoint, data, config);\n\nexport const post = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'post', endpoint, data, config);\n\nexport const del = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'delete', endpoint, data, config);\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\n\n// service\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\nimport { get, post, del } from '@/services/Service/methods';\nimport request from '@/services/Service/request';\nimport toQueryString from '@/services/Service/toQueryString';\n\n// types\nimport { Info, NlicResponse } from '@/types/api/response';\nimport { RequestConfig, IService } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\nexport { get, post, del, request, toQueryString };\n\nconst service: IService = {\n setAxiosInstance(this: void, instance: AxiosInstance) {\n setAxiosInstance(instance);\n },\n\n getAxiosInstance(this: void): AxiosInstance {\n return getAxiosInstance();\n },\n\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\n return getLastResponse();\n },\n\n getInfo(this: void): Info[] {\n return getInfo();\n },\n\n get(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return get(context, endpoint, data, config);\n },\n\n post(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return post(context, endpoint, data, config);\n },\n\n delete(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return del(context, endpoint, data, config);\n },\n\n request(\n this: void,\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return request(context, method, endpoint, data, config);\n },\n\n toQueryString>(this: void, data: T): string {\n return toQueryString(data);\n },\n};\n\nexport default service;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst FILTER_DELIMITER = ';';\nconst FILTER_PAIR_DELIMITER = '=';\n\nexport const encode = (filter: Record): string => {\n return Object.keys(filter)\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\n .join(FILTER_DELIMITER);\n};\n\nexport const decode = (filter: string): Record => {\n const result: Record = {};\n\n filter.split(FILTER_DELIMITER).forEach((v) => {\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\n result[name] = value;\n });\n\n return result;\n};\n\nexport default { encode, decode };\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nexport const isDefined = (value: unknown): boolean => {\n return typeof value !== 'undefined' && typeof value !== 'function';\n};\n\nexport const isValid = (value: unknown): boolean => {\n if (!isDefined(value)) {\n return false;\n }\n\n if (typeof value === 'number') {\n return !Number.isNaN(value);\n }\n\n return true;\n};\n\nexport const ensureNotNull = (value: unknown, name: string): void => {\n if (value === null) {\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\n }\n\n if (!isValid(value)) {\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\n }\n};\n\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\n ensureNotNull(value, name);\n\n if (!value) {\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\n }\n};\n\nexport default {\n isDefined,\n isValid,\n ensureNotNull,\n ensureNotEmpty,\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { ItemPagination } from '@/types/api/response';\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\n\nconst Page = function (content: T, pagination?: Partial) {\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\n\n const page: PaginationMethods = {\n getContent(this: void): T {\n return content;\n },\n\n getPagination(this: void): Pagination {\n return {\n pageNumber,\n itemsNumber,\n totalPages,\n totalItems,\n hasNext: totalPages > pageNumber + 1,\n };\n },\n\n getPageNumber(this: void): number {\n return pageNumber;\n },\n\n getItemsNumber(this: void): number {\n return itemsNumber;\n },\n\n getTotalPages(this: void): number {\n return totalPages;\n },\n\n getTotalItems(this: void): number {\n return totalItems;\n },\n\n hasNext(this: void): boolean {\n return totalPages > pageNumber + 1;\n },\n };\n\n return new Proxy(content, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(page, prop)) {\n return page[prop as keyof typeof page];\n }\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return (Page.prototype as object) || null;\n },\n }) as PageInstance;\n};\n\nexport default Page;\n","/**\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToBundle from '@/converters/itemToBundle';\n\n// services\nimport itemToLicense from '@/converters/itemToLicense';\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\nimport { IBundleService } from '@/types/services/BundleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\nconst type = Constants.Bundle.TYPE;\n\nconst bundleService: IBundleService = {\n /**\n * Gets a bundle by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the bundle number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the bundle object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Returns bundle of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of bundle entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const bundles: BundleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToBundle>(v));\n\n return Page(bundles || [], items as ItemPagination);\n },\n\n /**\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created bundle object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Updates bundle properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * updated bundle in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Deletes bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Obtain bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * licensee number\n * @param licenseeNumber String\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses\n * @returns {Promise}\n */\n async obtain(\n context: ContextInstance,\n number: string,\n licenseeNumber: string,\n config?: RequestConfig,\n ): Promise>[]> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\n\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\n const items = response.data.items;\n\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\n\n return licenses?.map((v) => itemToLicense>(v)) || [];\n },\n};\n\nexport default bundleService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\n\n// utils\nimport { isValid } from '@/utils/validation';\n\nclass ValidationResults implements ValidationResultsInstance {\n readonly validations: Record;\n ttl?: Date;\n\n constructor() {\n this.validations = {};\n }\n\n getValidators(): Record {\n return this.validations;\n }\n\n setValidation(validation: ProductModuleValidation): this {\n this.validations[validation.productModuleNumber] = validation;\n return this;\n }\n\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.validations[productModuleNumber] || def;\n }\n\n setProductModuleValidation(validation: ProductModuleValidation): this {\n return this.setValidation(validation);\n }\n\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.getValidation(productModuleNumber, def);\n }\n\n setTtl(ttl: Date | string): this {\n if (!isValid(ttl)) {\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\n }\n\n this.ttl = new Date(ttl);\n return this;\n }\n\n getTtl(): Date | undefined {\n return this.ttl;\n }\n\n toString(): string {\n let data = 'ValidationResult [';\n\n Object.keys(this.validations).forEach((pmNumber) => {\n data += `ProductModule<${pmNumber}>`;\n\n if (pmNumber in this.validations) {\n data += JSON.stringify(this.validations[pmNumber]);\n }\n });\n\n data += ']';\n\n return data;\n }\n}\n\nexport default (): ValidationResultsInstance => new ValidationResults();\n","/**\n * Licensee Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/licensee-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicensee from '@/converters/itemToLicensee';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\nimport { ILicenseeService } from '@/types/services/LicenseeService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\nimport ValidationResults from '@/vo/ValidationResults';\n\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\nconst type = Constants.Licensee.TYPE;\n\nconst licenseeService: ILicenseeService = {\n /**\n * Gets licensee by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the licensee number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the licensee in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of licensees (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseeEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicensee>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new licensee is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created licensee object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licensee, 'licensee');\n\n const data = licensee.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Updates licensee properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return updated licensee in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licensee, 'licensee');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Deletes licensee.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Validates active licenses of the licensee.\n * In the case of multiple product modules validation,\n * required parameters indexes will be added automatically.\n * See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\n *\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * optional validation parameters. See ValidationParameters and licensing model documentation for\n * details.\n * @param validationParameters NetLicensing.ValidationParameters.\n *\n * (optional) service request config\n * @param config\n *\n * @returns {ValidationResults}\n */\n async validate(\n context: ContextInstance,\n number: string,\n validationParameters?: ValidationParametersInstance,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n const data: Record = {};\n\n if (validationParameters) {\n const productNumber: string | undefined = validationParameters.productNumber;\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const licenseeProperties = validationParameters.licenseeProperties;\n\n Object.keys(licenseeProperties).forEach((key: string) => {\n data[key] = validationParameters.getLicenseeProperty(key);\n });\n\n if (validationParameters.isForOfflineUse()) {\n data.forOfflineUse = true;\n }\n\n if (validationParameters.isDryRun()) {\n data.dryRun = true;\n }\n\n const parameters = validationParameters.getParameters();\n\n Object.keys(parameters).forEach((pmNumber, i) => {\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\n\n const parameter = parameters[pmNumber];\n\n if (parameter) {\n Object.keys(parameter).forEach((key: string) => {\n data[key + i] = parameter[key];\n });\n }\n });\n }\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\n\n const validationResults = ValidationResults();\n\n const ttl = response.data.ttl;\n\n if (ttl) {\n validationResults.setTtl(ttl);\n }\n\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\n\n items?.forEach((v) => {\n validationResults.setValidation(itemToObject(v));\n });\n\n return validationResults;\n },\n\n /**\n * Transfer licenses between licensees.\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the number of the licensee receiving licenses\n * @param number string\n *\n * the number of the licensee delivering licenses\n * @param sourceLicenseeNumber string\n *\n * (optional) service request config\n * @param config\n *\n * @returns {Promise}\n */\n transfer(\n context: ContextInstance,\n number: string,\n sourceLicenseeNumber: string,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\n\n const data = { sourceLicenseeNumber };\n\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\n },\n};\n\nexport default licenseeService;\n","/**\n * JS representation of the License Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicense from '@/converters/itemToLicense';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\nimport { ILicenseService } from '@/types/services/LicenseService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.License.ENDPOINT_PATH;\nconst type = Constants.License.TYPE;\n\nconst licenseService: ILicenseService = {\n /**\n * Gets license by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#get-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Returns licenses of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#licenses-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicense>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#create-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent licensee to which the new license is to be added\n * @param licenseeNumber string\n *\n * license template that the license is created from\n * @param licenseTemplateNumber string\n *\n * For privileged logins specifies transaction for the license creation. For regular logins new\n * transaction always created implicitly, and the operation will be in a separate transaction.\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\n * auto-generated number.\n * @param transactionNumber null|string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created license object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n licenseeNumber: string | null,\n licenseTemplateNumber: string | null,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (licenseeNumber) {\n data.licenseeNumber = licenseeNumber;\n }\n\n if (licenseTemplateNumber) {\n data.licenseTemplateNumber = licenseTemplateNumber;\n }\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Updates license properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#update-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\n * operation will be in a separate transaction.\n * @param transactionNumber string|null\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return updated license in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Deletes license.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#delete-license\n *\n * When any license is deleted, corresponding transaction is created automatically.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-template-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport {\n LicenseTemplateProps,\n LicenseTemplateEntity,\n SavedLicenseTemplateProps,\n} from '@/types/entities/LicenseTemplate';\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\nconst type = Constants.LicenseTemplate.TYPE;\n\nconst licenseTemplateService: ILicenseTemplateService = {\n /**\n * Gets license template by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license template number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license template object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseTemplateEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicenseTemplate>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license template object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product module to which the new license template is to be added\n * @param productModuleNumber\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * the newly created license template object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productModuleNumber: string | null,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const data = licenseTemplate.serialize();\n\n if (productModuleNumber) {\n data.productModuleNumber = productModuleNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Updates license template properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * updated license template in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseTemplateService;\n","/**\n * JS representation of the Notification Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/notification-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToNotification from '@/converters/itemToNotification';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\nimport { INotificationService } from '@/types/services/NotificationService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\nconst type = Constants.Notification.TYPE;\n\nconst notificationService: INotificationService = {\n /**\n * Gets notification by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#get-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the notification number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the notification object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Returns notifications of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of notification entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: NotificationEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToNotification>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new notification with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#create-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created notification object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, endpoint, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Updates notification properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#update-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * updated notification in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Deletes notification.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default notificationService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\nconst type = Constants.PaymentMethod.TYPE;\n\nconst paymentMethodService: IPaymentMethodService = {\n /**\n * Gets payment method by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the payment method in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n\n /**\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of payment method entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: PaymentMethodEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToPaymentMethod>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Updates payment method properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param paymentMethod NetLicensing.PaymentMethod\n *\n * (optional) service request config\n * @param config\n *\n * return updated payment method in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n paymentMethod: PaymentMethodEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(paymentMethod, 'paymentMethod');\n\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n};\n\nexport default paymentMethodService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-module-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProductModule from '@/converters/itemToProductModule';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\nconst type = Constants.ProductModule.TYPE;\n\nconst productModuleService: IProductModuleService = {\n /**\n * Gets product module by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product module number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product module object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product modules entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductModuleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProductModule>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product module object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new product module is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * the newly created product module object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string | null,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(productModule, 'productModule');\n\n const data = productModule.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Updates product module properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * updated product module in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(productModule, 'productModule');\n\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Deletes product module.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productModuleService;\n","/**\n * JS representation of the Product Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProduct from '@/converters/itemToProduct';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\nimport { IProductService } from '@/types/services/ProductService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Product.ENDPOINT_PATH;\nconst type = Constants.Product.TYPE;\n\nconst productService: IProductService = {\n /**\n * Gets product by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#get-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#products-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProduct>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#create-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created product object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, endpoint, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Updates product properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#update-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * updated product in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Deletes product.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#delete-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productService;\n","/**\n * JS representation of the Token Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/token-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToToken from '@/converters/itemToToken';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ITokenService } from '@/types/services/TokenService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Token.ENDPOINT_PATH;\nconst type = Constants.Token.TYPE;\n\nconst tokenService: ITokenService = {\n /**\n * Gets token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#get-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number\n *\n * (optional) service request config\n * @param config\n *\n * return the token in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Returns tokens of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#tokens-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined|null\n *\n * (optional) service request config\n * @param config\n *\n * array of token entities or empty array if nothing found.\n * @return array\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TokenEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToToken>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new token.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param token Token\n *\n * (optional) service request config\n * @param config\n *\n * return created token in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n token: TokenEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(token, 'token');\n\n const response = await Service.post(context, endpoint, token.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Delete token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#delete-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default tokenService;\n","/**\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/transaction-services\n *\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToTransaction from '@/converters/itemToTransaction';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport type { ItemPagination } from '@/types/api/response';\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ITransactionService } from '@/types/services/TransactionService';\nimport type { ContextInstance } from '@/types/vo/Context';\nimport type { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\nconst type = Constants.Transaction.TYPE;\n\nconst transactionService: ITransactionService = {\n /**\n * Gets transaction by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the transaction number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the transaction in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string\n *\n * (optional) service request config\n * @param config\n *\n * array of transaction entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TransactionEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToTransaction>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created transaction object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Updates transaction properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * transaction number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return updated transaction in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n};\n\nexport default transactionService;\n","/**\n * JS representation of the Utility Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/utility-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToCountry from '@/converters/itemToCountry';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\nimport { CountryEntity } from '@/types/entities/Country';\nimport { RequestConfig } from '@/types/services/Service';\nimport { IUtilityService } from '@/types/services/UtilityService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\n\nconst utilityService: IUtilityService = {\n /**\n * Returns all license types. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license types or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSE_TYPE;\n\n const licenseTypes: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all license models. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license models or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicensingModels(\n context: ContextInstance,\n config?: RequestConfig,\n ): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\n\n const licensingModels: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all countries.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter\n *\n * (optional) service request config\n * @param config\n *\n * collection of available countries or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async listCountries(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const type = Constants.Utility.COUNTRY_TYPE;\n\n const countries: CountryEntity[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToCountry(v));\n\n return Page(countries || [], items as ItemPagination);\n },\n};\n\nexport default utilityService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport SecurityModeEnum from '@/constants/SecurityMode';\n\n// types\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\n\nclass Context implements ContextInstance {\n baseUrl: string;\n securityMode: SecurityModeValues;\n username?: string;\n password?: string;\n apiKey?: string;\n publicKey?: string;\n\n constructor(props?: ContextConfig) {\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\n this.username = props?.username;\n this.password = props?.password;\n this.apiKey = props?.apiKey;\n this.publicKey = props?.publicKey;\n }\n\n setBaseUrl(baseUrl: string): this {\n this.baseUrl = baseUrl;\n return this;\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n setSecurityMode(securityMode: SecurityModeValues): this {\n this.securityMode = securityMode;\n return this;\n }\n\n getSecurityMode(): SecurityModeValues {\n return this.securityMode;\n }\n\n setUsername(username: string): this {\n this.username = username;\n return this;\n }\n\n getUsername(def?: D): string | D {\n return (this.username || def) as string | D;\n }\n\n setPassword(password: string): this {\n this.password = password;\n return this;\n }\n\n getPassword(def?: D): string | D {\n return (this.password || def) as string | D;\n }\n\n setApiKey(apiKey: string): this {\n this.apiKey = apiKey;\n return this;\n }\n\n getApiKey(def?: D): string | D {\n return (this.apiKey || def) as string | D;\n }\n\n setPublicKey(publicKey: string): this {\n this.publicKey = publicKey;\n return this;\n }\n\n getPublicKey(def?: D): string | D {\n return (this.publicKey || def) as string | D;\n }\n}\n\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport {\n ValidationParametersInstance,\n Parameter,\n Parameters,\n LicenseeProperties,\n} from '@/types/vo/ValidationParameters';\n\nclass ValidationParameters implements ValidationParametersInstance {\n productNumber?: string;\n dryRun?: boolean;\n forOfflineUse?: boolean;\n licenseeProperties: LicenseeProperties;\n parameters: Parameters;\n\n constructor() {\n this.parameters = {};\n this.licenseeProperties = {};\n }\n\n setProductNumber(productNumber: string): this {\n this.productNumber = productNumber;\n return this;\n }\n\n getProductNumber(): string | undefined {\n return this.productNumber;\n }\n\n setLicenseeName(licenseeName: string): this {\n this.licenseeProperties.licenseeName = licenseeName;\n return this;\n }\n\n getLicenseeName(): string | undefined {\n return this.licenseeProperties.licenseeName;\n }\n\n setLicenseeSecret(licenseeSecret: string): this {\n this.licenseeProperties.licenseeSecret = licenseeSecret;\n return this;\n }\n\n getLicenseeSecret(): string | undefined {\n return this.licenseeProperties.licenseeSecret;\n }\n\n getLicenseeProperties(): LicenseeProperties {\n return this.licenseeProperties;\n }\n\n setLicenseeProperty(key: string, value: string): this {\n this.licenseeProperties[key] = value;\n return this;\n }\n\n getLicenseeProperty(key: string, def?: D): string | D {\n return (this.licenseeProperties[key] || def) as string | D;\n }\n\n setForOfflineUse(forOfflineUse: boolean): this {\n this.forOfflineUse = forOfflineUse;\n return this;\n }\n\n isForOfflineUse() {\n return !!this.forOfflineUse;\n }\n\n setDryRun(dryRun: boolean): this {\n this.dryRun = dryRun;\n return this;\n }\n\n isDryRun(): boolean {\n return !!this.dryRun;\n }\n\n getParameters(): Parameters {\n return this.parameters;\n }\n\n setParameter(productModuleNumber: string, parameter: Parameter): this {\n this.parameters[productModuleNumber] = parameter;\n return this;\n }\n\n getParameter(productModuleNumber: string): Parameter | undefined {\n return this.parameters[productModuleNumber];\n }\n\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\n return this.getParameter(productModuleNumber);\n }\n\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\n return this.setParameter(productModuleNumber, productModuleParameters);\n }\n}\n\nexport default (): ValidationParametersInstance => new ValidationParameters();\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.mjs b/dist/index.mjs index 0bc4bdf..d2203aa 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -1,2 +1,2 @@ -var lt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=lt;var ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=ft;var Tt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=Tt;var Pt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=Pt;var gt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=gt;var yt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),le=yt;var Dt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),Q=Dt;var Et=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),fe=Et;var vt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),W=vt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:le,TokenType:Q,TransactionSource:fe,TransactionStatus:W,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:Q},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:W},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ht=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Nt=ht;var It=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),bt=It;var Lt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Rt=Lt;var Ct=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),xt=Ct;var St=n=>{try{return JSON.parse(n)}catch{return n}},At=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=St(t)}),e},Mt=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...At(n.property),...Mt(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var Ot=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return Te(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(v=>{v(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=Ot;var qe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var ye=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},Fe)},k=Fe;var L=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),k(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},He)},De=He;var x=n=>De(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ke)},Ee=Ke;var S=n=>Ee(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as _t}from"axios";var h=class n extends _t{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var Qe=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},Qe,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=Qe;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},be=We;var O=n=>be(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},Xe)},Le=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Le(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=X({number:s}),l=k({number:c});return Ce(d,l)})),X(e)};import wt from"axios";var et=wt.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"1.2.39",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ee(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let l=await d(c),f=l.data.infos?.info||[];if(xe(l),Se(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let v=f.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,l.config,l.request,l)}return l}catch(l){let f=l,v=f.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),l.isAxiosError){let b=l.message;if(v?.data&&I.length>0){let V=I.find(({type:j})=>j==="ERROR");V&&(b=V.value)}throw new h(b,f.code,f.config,f.request,f.response)}throw l}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var Vt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=Vt;var dt=";",mt="=",D=n=>Object.keys(n).map(e=>`${e}${mt}${String(n[e])}`).join(dt),jt=n=>{let e={};return n.split(dt).forEach(o=>{let[t,i]=o.split(mt);e[t]=i}),e};var ut=n=>typeof n<"u"&&typeof n!="function",te=n=>ut(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var pt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,v){return Reflect.set(d,l,f,v)},getPrototypeOf(){return pt.prototype||null}})},y=pt;var U=u.Bundle.ENDPOINT_PATH,kt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,$t={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,U,t,o)).data.items,c=s?.item.filter(d=>d.type===ne).map(d=>C(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${kt}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>L(l))||[]}},Bt=$t;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,qt=u.Licensee.ENDPOINT_PATH_VALIDATE,Yt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,R,t,o)).data.items,c=s?.item.filter(d=>d.type===oe).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let v=o.licenseeProperties;Object.keys(v).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((b,V)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${V}`]=b;let j=I[b];j&&Object.keys(j).forEach($e=>{i[$e+V]=j[$e]})})}let s=await m.post(n,`${R}/${e}/${qt}`,i,t),c=Oe(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Yt}`,i,t)}},Ht=Ft;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return L(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,q,t,o)).data.items,c=s?.item.filter(d=>d.type===ie).map(d=>L(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,q,c,s)).data.items?.item.find(f=>f.type===ie);return L(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(l=>l.type===ie);return L(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Y,t,o)).data.items,c=s?.item.filter(d=>d.type===se).map(d=>S(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Qt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,F,t,o)).data.items,c=s?.item.filter(d=>d.type===re).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Wt=Qt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_e,t,o)).data.items,c=s?.item.filter(d=>d.type===we).map(d=>$(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===we);return $(s)}},Zt=Xt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,H,t,o)).data.items,c=s?.item.filter(d=>d.type===ae).map(d=>O(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},tn=en;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,K,t,o)).data.items,c=s?.item.filter(d=>d.type===ce).map(d=>M(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},on=nn;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,de,t,o)).data.items,c=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},rn=sn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,an={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,me,t,o)).data.items,c=s?.item.filter(d=>d.type===ue).map(d=>_(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ue);return _(s)}},cn=an;var Ve=u.Utility.ENDPOINT_PATH,dn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>ye(f));return y(l||[],c)}},mn=dn;var je=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},un=n=>new je(n);var ke=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},pn=()=>new ke;export{Nt as ApiKeyRole,Pe as Bundle,Bt as BundleService,u as Constants,un as Context,ge as Country,k as License,zt as LicenseService,Ee as LicenseTemplate,Jt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,De as Licensee,pe as LicenseeSecretMode,Ht as LicenseeService,bt as LicensingModel,h as NlicError,Rt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Wt as NotificationService,y as Page,he as PaymentMethod,xt as PaymentMethodEnum,Zt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,be as ProductModule,tn as ProductModuleService,on as ProductService,N as SecurityMode,m as Service,le as TimeVolumePeriod,Le as Token,rn as TokenService,Q as TokenType,X as Transaction,cn as TransactionService,fe as TransactionSource,W as TransactionStatus,mn as UtilityService,pn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,jt as filterDecode,D as filterEncode,ut as isDefined,te as isValid,C as itemToBundle,ye as itemToCountry,L as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,E as serialize}; +var lt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=lt;var ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=ft;var Tt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=Tt;var Pt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=Pt;var gt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=gt;var yt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),le=yt;var Dt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),Q=Dt;var Et=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),fe=Et;var vt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),W=vt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:le,TokenType:Q,TransactionSource:fe,TransactionStatus:W,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:Q},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:W},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ht=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Nt=ht;var It=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),bt=It;var Lt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Rt=Lt;var Ct=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),xt=Ct;var St=n=>{try{return JSON.parse(n)}catch{return n}},At=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=St(t)}),e},Mt=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...At(n.property),...Mt(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var Ot=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return Te(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(v=>{v(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=Ot;var qe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var ye=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},Fe)},k=Fe;var L=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),k(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},He)},De=He;var x=n=>De(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ke)},Ee=Ke;var S=n=>Ee(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as _t}from"axios";var h=class n extends _t{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var Qe=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},Qe,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=Qe;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},be=We;var O=n=>be(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},Xe)},Le=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Le(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=X({number:s}),l=k({number:c});return Ce(d,l)})),X(e)};import wt from"axios";var et=wt.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ee(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let l=await d(c),f=l.data.infos?.info||[];if(xe(l),Se(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let v=f.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,l.config,l.request,l)}return l}catch(l){let f=l,v=f.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),l.isAxiosError){let b=l.message;if(v?.data&&I.length>0){let V=I.find(({type:j})=>j==="ERROR");V&&(b=V.value)}throw new h(b,f.code,f.config,f.request,f.response)}throw l}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var Vt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=Vt;var dt=";",mt="=",D=n=>Object.keys(n).map(e=>`${e}${mt}${String(n[e])}`).join(dt),jt=n=>{let e={};return n.split(dt).forEach(o=>{let[t,i]=o.split(mt);e[t]=i}),e};var ut=n=>typeof n<"u"&&typeof n!="function",te=n=>ut(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var pt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,v){return Reflect.set(d,l,f,v)},getPrototypeOf(){return pt.prototype||null}})},y=pt;var U=u.Bundle.ENDPOINT_PATH,kt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,$t={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,U,t,o)).data.items,c=s?.item.filter(d=>d.type===ne).map(d=>C(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${kt}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>L(l))||[]}},Bt=$t;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,qt=u.Licensee.ENDPOINT_PATH_VALIDATE,Yt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,R,t,o)).data.items,c=s?.item.filter(d=>d.type===oe).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let v=o.licenseeProperties;Object.keys(v).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((b,V)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${V}`]=b;let j=I[b];j&&Object.keys(j).forEach($e=>{i[$e+V]=j[$e]})})}let s=await m.post(n,`${R}/${e}/${qt}`,i,t),c=Oe(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Yt}`,i,t)}},Ht=Ft;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return L(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,q,t,o)).data.items,c=s?.item.filter(d=>d.type===ie).map(d=>L(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,q,c,s)).data.items?.item.find(f=>f.type===ie);return L(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(l=>l.type===ie);return L(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Y,t,o)).data.items,c=s?.item.filter(d=>d.type===se).map(d=>S(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Qt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,F,t,o)).data.items,c=s?.item.filter(d=>d.type===re).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Wt=Qt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_e,t,o)).data.items,c=s?.item.filter(d=>d.type===we).map(d=>$(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===we);return $(s)}},Zt=Xt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,H,t,o)).data.items,c=s?.item.filter(d=>d.type===ae).map(d=>O(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},tn=en;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,K,t,o)).data.items,c=s?.item.filter(d=>d.type===ce).map(d=>M(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},on=nn;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,de,t,o)).data.items,c=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},rn=sn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,an={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,me,t,o)).data.items,c=s?.item.filter(d=>d.type===ue).map(d=>_(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ue);return _(s)}},cn=an;var Ve=u.Utility.ENDPOINT_PATH,dn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>ye(f));return y(l||[],c)}},mn=dn;var je=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},un=n=>new je(n);var ke=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},pn=()=>new ke;export{Nt as ApiKeyRole,Pe as Bundle,Bt as BundleService,u as Constants,un as Context,ge as Country,k as License,zt as LicenseService,Ee as LicenseTemplate,Jt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,De as Licensee,pe as LicenseeSecretMode,Ht as LicenseeService,bt as LicensingModel,h as NlicError,Rt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Wt as NotificationService,y as Page,he as PaymentMethod,xt as PaymentMethodEnum,Zt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,be as ProductModule,tn as ProductModuleService,on as ProductService,N as SecurityMode,m as Service,le as TimeVolumePeriod,Le as Token,rn as TokenService,Q as TokenType,X as Transaction,cn as TransactionService,fe as TransactionSource,W as TransactionStatus,mn as UtilityService,pn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,jt as filterDecode,D as filterEncode,ut as isDefined,te as isValid,C as itemToBundle,ye as itemToCountry,L as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,E as serialize}; //# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/dist/index.mjs.map b/dist/index.mjs.map index 6d48d07..b384e24 100644 --- a/dist/index.mjs.map +++ b/dist/index.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseeSecretMode = Object.freeze({\n // @deprecated\n DISABLED: 'DISABLED',\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default LicenseeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicenseType = Object.freeze({\n FEATURE: 'FEATURE',\n TIMEVOLUME: 'TIMEVOLUME',\n FLOATING: 'FLOATING',\n QUANTITY: 'QUANTITY',\n});\n\nexport default LicenseType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationEvent = Object.freeze({\n LICENSEE_CREATED: 'LICENSEE_CREATED',\n LICENSE_CREATED: 'LICENSE_CREATED',\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\n});\n\nexport default NotificationEvent;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NotificationProtocol = Object.freeze({\n WEBHOOK: 'WEBHOOK',\n});\n\nexport default NotificationProtocol;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst SecurityMode = Object.freeze({\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n APIKEY_IDENTIFICATION: 'APIKEY',\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n});\n\nexport default SecurityMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TimeVolumePeriod = Object.freeze({\n DAY: 'DAY',\n WEEK: 'WEEK',\n MONTH: 'MONTH',\n YEAR: 'YEAR',\n});\n\nexport default TimeVolumePeriod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TokenType = Object.freeze({\n DEFAULT: 'DEFAULT',\n SHOP: 'SHOP',\n APIKEY: 'APIKEY',\n ACTION: 'ACTION',\n});\n\nexport default TokenType;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionSource = Object.freeze({\n SHOP: 'SHOP',\n\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\n\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\n\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\n\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\n\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\n\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\n\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\n\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\n\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\n\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\n});\n\nexport default TransactionSource;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst TransactionStatus = Object.freeze({\n PENDING: 'PENDING',\n CLOSED: 'CLOSED',\n CANCELLED: 'CANCELLED',\n});\n\nexport default TransactionStatus;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\nimport LicenseType from '@/constants/LicenseType';\nimport NotificationEvent from '@/constants/NotificationEvent';\nimport NotificationProtocol from '@/constants/NotificationProtocol';\nimport SecurityMode from '@/constants/SecurityMode';\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\nimport TokenType from '@/constants/TokenType';\nimport TransactionSource from '@/constants/TransactionSource';\nimport TransactionStatus from '@/constants/TransactionStatus';\n\nexport default {\n LicenseeSecretMode,\n LicenseType,\n NotificationEvent,\n NotificationProtocol,\n SecurityMode,\n TimeVolumePeriod,\n TokenType,\n TransactionSource,\n TransactionStatus,\n\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\n\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\n APIKEY_IDENTIFICATION: 'APIKEY',\n\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\n\n FILTER: 'filter',\n\n Product: {\n TYPE: 'Product',\n ENDPOINT_PATH: 'product',\n },\n\n ProductModule: {\n TYPE: 'ProductModule',\n ENDPOINT_PATH: 'productmodule',\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\n },\n\n Licensee: {\n TYPE: 'Licensee',\n ENDPOINT_PATH: 'licensee',\n ENDPOINT_PATH_VALIDATE: 'validate',\n ENDPOINT_PATH_TRANSFER: 'transfer',\n LICENSEE_NUMBER: 'licenseeNumber',\n },\n\n LicenseTemplate: {\n TYPE: 'LicenseTemplate',\n ENDPOINT_PATH: 'licensetemplate',\n\n // @deprecated use LicenseType directly instead\n LicenseType,\n },\n\n License: {\n TYPE: 'License',\n ENDPOINT_PATH: 'license',\n },\n\n Validation: {\n TYPE: 'ProductModuleValidation',\n },\n\n Token: {\n TYPE: 'Token',\n ENDPOINT_PATH: 'token',\n\n // @deprecated use TokenType directly instead\n Type: TokenType,\n },\n\n PaymentMethod: {\n TYPE: 'PaymentMethod',\n ENDPOINT_PATH: 'paymentmethod',\n },\n\n Bundle: {\n TYPE: 'Bundle',\n ENDPOINT_PATH: 'bundle',\n ENDPOINT_OBTAIN_PATH: 'obtain',\n },\n\n Notification: {\n TYPE: 'Notification',\n ENDPOINT_PATH: 'notification',\n\n // @deprecated use NotificationProtocol directly instead\n Protocol: NotificationProtocol,\n\n // @deprecated use NotificationEvent directly instead\n Event: NotificationEvent,\n },\n\n Transaction: {\n TYPE: 'Transaction',\n ENDPOINT_PATH: 'transaction',\n\n // @deprecated use TransactionStatus directly instead\n Status: TransactionStatus,\n },\n\n Utility: {\n ENDPOINT_PATH: 'utility',\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\n ENDPOINT_PATH_COUNTRIES: 'countries',\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\n LICENSE_TYPE: 'LicenseType',\n COUNTRY_TYPE: 'Country',\n },\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst ApiKeyRole = Object.freeze({\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\n});\n\nexport default ApiKeyRole;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst LicensingModel = Object.freeze({\n TRY_AND_BUY: 'TryAndBuy',\n SUBSCRIPTION: 'Subscription',\n RENTAL: 'Rental',\n FLOATING: 'Floating',\n MULTI_FEATURE: 'MultiFeature',\n PAY_PER_USE: 'PayPerUse',\n PRICING_TABLE: 'PricingTable',\n QUOTA: 'Quota',\n NODE_LOCKED: 'NodeLocked',\n DISCOUNT: 'Discount',\n});\n\nexport default LicensingModel;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst NodeSecretMode = Object.freeze({\n PREDEFINED: 'PREDEFINED',\n CLIENT: 'CLIENT',\n});\n\nexport default NodeSecretMode;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst PaymentMethodEnum = Object.freeze({\n NULL: 'NULL',\n PAYPAL: 'PAYPAL',\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\n STRIPE: 'STRIPE',\n STRIPE_TESTING: 'STRIPE_TESTING',\n});\n\nexport default PaymentMethodEnum;\n","import { Item, List } from '@/types/api/response';\n\nconst cast = (value: string): unknown => {\n try {\n return JSON.parse(value);\n } catch (e) {\n return value;\n }\n};\n\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\n const result: Record = {};\n properties?.forEach(({ name, value }) => {\n result[name] = cast(value);\n });\n return result;\n};\n\nconst extractLists = (lists?: List[]) => {\n const result: Record = {};\n\n lists?.forEach((list) => {\n const { name } = list;\n result[name] = result[name] || [];\n result[name].push(itemToObject(list));\n });\n return result;\n};\n\nconst itemToObject = >(item?: Item | List): T => {\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\n};\n\nexport default itemToObject;\n","export const has = (obj: T, key: K): boolean => {\n return Object.hasOwn(obj, key);\n};\n\nexport const set = (obj: T, key: K, value: T[K]): void => {\n obj[key] = value;\n};\n\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\n return has(obj, key) ? obj[key] : (def as D);\n};\n\nexport default {\n has,\n set,\n get,\n};\n","/**\n * Converts an object into a map of type Record, where the value of each object property is converted\n * to a string.\n * If the property's value is `undefined`, it will be replaced with an empty string.\n * If the value is already a string, it will remain unchanged.\n * If the value is Date instance, it wll be replaced with an ISO format date string.\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\n * If serialization fails, the value will be converted to a string using `String()`.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n * @param obj - The object to be converted into a map.\n * @param options\n * @returns A map (Record) with converted property values from the object.\n */\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\n const map: Record = {};\n\n const { ignore = [] } = options;\n\n Object.entries(obj).forEach(([k, v]) => {\n // ignore keys\n if (ignore.includes(k)) {\n return;\n }\n\n if (typeof v === 'function') {\n // ignore functions\n return;\n } else if (v === undefined) {\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\n } else if (typeof v === 'string') {\n map[k] = v; // If the value is already a string, leave it unchanged\n } else if (v instanceof Date) {\n // if the value is Date, convert it to ISO string\n map[k] = v.toISOString();\n } else if (typeof v !== 'object' || v === null) {\n // If it's not an object (or is null), convert it to string\n map[k] = String(v);\n } else {\n // Try to serialize the object or array into JSON\n try {\n map[k] = JSON.stringify(v);\n } catch {\n map[k] = String(v);\n }\n }\n });\n\n return map;\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type {\n Entity,\n EntityMethods,\n Proto,\n PropGetEventListener,\n PropSetEventListener,\n} from '@/types/entities/defineEntity';\n\n// utils\nimport { set, has, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst defineEntity = function

(\n props: T,\n methods: M,\n proto: P = {} as P,\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\n) {\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\n set: [],\n get: [],\n };\n\n if (options?.get) {\n listeners.get.push(options.get);\n }\n\n if (options?.set) {\n listeners.set.push(options.set);\n }\n\n const base: EntityMethods = {\n set(this: void, key, value): void {\n set(props, key, value);\n },\n\n get(this: void, key, def) {\n return get(props, key, def);\n },\n\n has(this: void, key) {\n return has(props, key);\n },\n\n // Aliases\n setProperty(key, value) {\n this.set(key, value);\n },\n\n addProperty(key, value) {\n this.set(key, value);\n },\n\n getProperty(key, def) {\n return this.get(key, def);\n },\n\n hasProperty(key) {\n return this.has(key);\n },\n\n setProperties(properties) {\n Object.entries(properties).forEach(([k, v]) => {\n this.set(k as keyof T, v as T[keyof T]);\n });\n },\n\n serialize(this: void) {\n return serialize(props);\n },\n };\n\n return new Proxy(props, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(methods, prop)) {\n return methods[prop as keyof typeof methods];\n }\n\n if (Object.hasOwn(base, prop)) {\n return base[prop as keyof typeof base];\n }\n\n listeners.get.forEach((l) => {\n l(obj, prop, receiver);\n });\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n listeners.set.forEach((l) => {\n l(obj, prop, value, receiver);\n });\n\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return proto.prototype || null;\n },\n }) as Entity;\n};\n\nexport default defineEntity;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// types\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * NetLicensing Bundle entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the bundle is disabled.\n * @property boolean active\n *\n * Bundle name.\n * @property string name\n *\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the bundle price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * The bundle includes a set of templates, each identified by a unique template number.\n * @property string[] licenseTemplateNumbers\n *\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\n const props: BundleProps = { ...properties };\n\n const methods: BundleMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string) {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\n set(props, 'licenseTemplateNumbers', numbers);\n },\n\n addLicenseTemplateNumber(this: void, number: string): void {\n if (!props.licenseTemplateNumbers) {\n props.licenseTemplateNumbers = [];\n }\n\n props.licenseTemplateNumbers.push(number);\n },\n\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\n },\n\n removeLicenseTemplateNumber(this: void, number: string): void {\n const { licenseTemplateNumbers: numbers = [] } = props;\n\n numbers.splice(numbers.indexOf(number), 1);\n props.licenseTemplateNumbers = numbers;\n },\n\n serialize(this: void): Record {\n if (props.licenseTemplateNumbers) {\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\n return serialize({ ...props, licenseTemplateNumbers });\n }\n\n return serialize(props);\n },\n };\n\n return defineEntity(props as BundleProps, methods, Bundle);\n};\n\nexport default Bundle;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Bundle from '@/entities/Bundle';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { BundleProps } from '@/types/entities/Bundle';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { licenseTemplateNumbers } = props;\n\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\n }\n\n return Bundle(props as BundleProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * Country entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * @property code - Unique code of country.\n * @property name - Unique name of country\n * @property vatPercent - Country vat.\n * @property isEu - is country in EU.\n */\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\n const defaults: CountryProps = {\n code: '',\n name: '',\n vatPercent: 0,\n isEu: false,\n };\n\n const props: CountryProps = { ...defaults, ...properties };\n\n const methods: CountryMethods = {\n getCode(this: void): string {\n return props.code;\n },\n\n getName(this: void): string {\n return props.name;\n },\n\n getVatPercent(this: void): number {\n return props.vatPercent as number;\n },\n\n getIsEu(this: void): boolean {\n return props.isEu;\n },\n };\n\n return defineEntity(props, methods, Country);\n};\n\nexport default Country;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport Country from '@/entities/Country';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { CountryProps } from '@/types/entities/Country';\n\nexport default (item?: Item) => Country(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n // TimeVolume\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setStartDate(this: void, startDate: Date | 'now'): void {\n set(props, 'startDate', startDate);\n },\n\n getStartDate(this: void, def?: D): Date | 'now' | D {\n return get(props, 'startDate', def) as Date | 'now' | D;\n },\n\n // Rental\n setParentfeature(this: void, parentfeature?: string): void {\n set(props, 'parentfeature', parentfeature);\n },\n\n getParentfeature(this: void, def?: D): string | D {\n return get(props, 'parentfeature', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport License from '@/entities/License';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseProps } from '@/types/entities/License';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { startDate } = props;\n\n if (startDate && typeof startDate === 'string') {\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\n }\n\n return License(props as LicenseProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Licensee entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\n * the licensee.\n * @property string number\n *\n * Licensee name.\n * @property string name\n *\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\n * disabled (tbd).\n * @property boolean active\n *\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\n * @property string licenseeSecret\n *\n * Mark licensee for transfer.\n * @property boolean markedForTransfer\n *\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\n */\n\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\n const props: LicenseeProps = { ...properties };\n\n const methods: LicenseeMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProductNumber(this: void, number: string): void {\n set(props, 'productNumber', number);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setMarkedForTransfer(this: void, mark: boolean): void {\n set(props, 'markedForTransfer', mark);\n },\n\n getMarkedForTransfer(this: void, def?: D): boolean | D {\n return get(props, 'markedForTransfer', def) as boolean | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseeProps, methods, Licensee);\n};\n\nexport default Licensee;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Licensee from '@/entities/Licensee';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseeProps } from '@/types/entities/Licensee';\n\nexport default (item?: Item) => Licensee(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * License template entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\n * assign this number when creating a license template or let NetLicensing generate one.\n * Read-only after creation of the first license from this license template.\n * @property string number\n *\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\n * license template.\n * @property boolean active\n *\n * Name for the licensed item.\n * @property string name\n *\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\n * \"FLOATING\", \"QUANTITY\"\n * @property string licenseType\n *\n * Price for the license. If >0, it must always be accompanied by the currency specification.\n * @property number price\n *\n * Specifies currency for the license price. Check data types to discover which currencies are\n * supported.\n * @property string currency\n *\n * If set to true, every new licensee automatically gets one license out of this license template on\n * creation. Automatic licenses must have their price set to 0.\n * @property boolean automatic\n *\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\n * @property boolean hidden\n *\n * If set to true, licenses from this license template are not visible to the end customer, but\n * participate in validation.\n * @property boolean hideLicenses\n *\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\n * @property boolean gracePeriod\n *\n * Mandatory for 'TIMEVOLUME' license type.\n * @property number timeVolume\n *\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\n * @property string timeVolumePeriod\n *\n * Mandatory for 'FLOATING' license type.\n * @property number maxSessions\n *\n * Mandatory for 'QUANTITY' license type.\n * @property number quantity\n */\n\nconst LicenseTemplate = function (\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\n): LicenseTemplateEntity {\n const props: LicenseTemplateProps = { ...properties };\n\n const methods: LicenseTemplateMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicenseType(this: void, type: LicenseTypeValues): void {\n set(props, 'licenseType', type);\n },\n\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAutomatic(this: void, automatic: boolean): void {\n set(props, 'automatic', automatic);\n },\n\n getAutomatic(this: void, def?: D): boolean | D {\n return get(props, 'automatic', def) as boolean | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setHideLicenses(this: void, hideLicenses: boolean): void {\n set(props, 'hideLicenses', hideLicenses);\n },\n\n getHideLicenses(this: void, def?: D): boolean | D {\n return get(props, 'hideLicenses', def) as boolean | D;\n },\n\n setGracePeriod(this: void, gradePeriod: boolean): void {\n set(props, 'gracePeriod', gradePeriod);\n },\n\n getGracePeriod(this: void, def?: D): boolean | D {\n return get(props, 'gracePeriod', def) as boolean | D;\n },\n\n setTimeVolume(this: void, timeVolume: number): void {\n set(props, 'timeVolume', timeVolume);\n },\n\n getTimeVolume(this: void, def?: D): number | D {\n return get(props, 'timeVolume', def) as number | D;\n },\n\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\n set(props, 'timeVolumePeriod', timeVolumePeriod);\n },\n\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\n },\n\n setMaxSessions(this: void, maxSessions: number): void {\n set(props, 'maxSessions', maxSessions);\n },\n\n getMaxSessions(this: void, def?: D): number | D {\n return get(props, 'maxSessions', def) as number | D;\n },\n\n setQuantity(this: void, quantity: number): void {\n set(props, 'quantity', quantity);\n },\n\n getQuantity(this: void, def?: D): number | D {\n return get(props, 'quantity', def) as number | D;\n },\n\n setProductModuleNumber(this: void, productModuleNumber: string): void {\n set(props, 'productModuleNumber', productModuleNumber);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\n};\n\nexport default LicenseTemplate;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport LicenseTemplate from '@/entities/LicenseTemplate';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\n\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\n\n// types\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Notification entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\n * let NetLicensing generate one.\n * @property string number\n *\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\n * @property boolean active\n *\n * Notification name.\n * @property string name\n *\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\n * @property float type\n *\n * Comma separated string of events that fire the notification when emitted.\n * @property string events\n *\n * Notification response payload.\n * @property string payload\n *\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\n * @property string url\n *\n * Arbitrary additional user properties of string type may be associated with each notification.\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\n * deleted.\n */\n\nconst Notification = function (\n properties: NotificationProps = {} as NotificationProps,\n): NotificationEntity {\n const props: NotificationProps = { ...properties };\n\n const methods: NotificationMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\n set(props, 'protocol', protocol);\n },\n\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\n },\n\n setEvents(this: void, events: NotificationEventValues[]): void {\n set(props, 'events', events);\n },\n\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\n return get(props, 'events', def) as NotificationEventValues[] | D;\n },\n\n addEvent(event: NotificationEventValues): void {\n const events = this.getEvents([]) as NotificationEventValues[];\n events.push(event);\n\n this.setEvents(events);\n },\n\n setPayload(this: void, payload: string): void {\n set(props, 'payload', payload);\n },\n\n getPayload(this: void, def?: D): string | D {\n return get(props, 'payload', def) as string | D;\n },\n\n setEndpoint(this: void, endpoint: string): void {\n set(props, 'endpoint', endpoint);\n },\n\n getEndpoint(this: void, def?: D): string | D {\n return get(props, 'endpoint', def) as string | D;\n },\n\n serialize(): Record {\n const data = serialize(props);\n\n if (data.events) {\n data.events = this.getEvents([]).join(',');\n }\n\n return data;\n },\n };\n\n return defineEntity(props as NotificationProps, methods, Notification);\n};\n\nexport default Notification;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Notification from '@/entities/Notification';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { NotificationProps } from '@/types/entities/Notification';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { events } = props;\n\n if (events && typeof events === 'string') {\n props.events = events.split(',');\n }\n\n return Notification(props as NotificationProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\n/**\n * PaymentMethod entity used internally by NetLicensing.\n *\n * @property string number\n * @property boolean active\n * @property string paypal.subject\n */\nconst PaymentMethod = function (\n properties: PaymentMethodProps = {} as PaymentMethodProps,\n): PaymentMethodEntity {\n const props: PaymentMethodProps = { ...properties };\n\n const methods: PaymentMethodMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n };\n\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\n};\n\nexport default PaymentMethod;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport PaymentMethod from '@/entities/PaymentMethod';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\n\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * NetLicensing Product entity.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\n * @property string number\n *\n * If set to false, the product is disabled. No new licensees can be registered for the product,\n * existing licensees can not obtain new licenses.\n * @property boolean active\n *\n * Product name. Together with the version identifies the product for the end customer.\n * @property string name\n *\n * Product version. Convenience parameter, additional to the product name.\n * @property string version\n *\n * If set to 'true', non-existing licensees will be created at first validation attempt.\n * @property boolean licenseeAutoCreate\n *\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\n * @property boolean licenseeSecretMode\n *\n * Product description. Optional.\n * @property string description\n *\n * Licensing information. Optional.\n * @property string licensingInfo\n *\n * @property boolean inUse\n *\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\n */\nconst Product = function (\n properties: ProductProps = {} as ProductProps,\n): ProductEntity {\n const props: ProductProps = { ...properties };\n\n const methods: ProductMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setVersion(this: void, version: string): void {\n set(props, 'version', version);\n },\n\n getVersion(this: void, def?: D): string | number | D {\n return get(props, 'version', def) as string | number | D;\n },\n\n setDescription(this: void, description: string): void {\n set(props, 'description', description);\n },\n\n getDescription(this: void, def?: D): string | D {\n return get(props, 'description', def) as string | D;\n },\n\n setLicensingInfo(this: void, licensingInfo: string): void {\n set(props, 'licensingInfo', licensingInfo);\n },\n\n getLicensingInfo(this: void, def?: D): string | D {\n return get(props, 'licensingInfo', def) as string | D;\n },\n\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\n },\n\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\n },\n\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\n set(props, 'discounts', discounts);\n },\n\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\n },\n\n addDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\n discounts.push(discount);\n\n this.setDiscounts(discounts);\n },\n\n removeDiscount(discount: ProductDiscountEntity): void {\n const discounts = this.getDiscounts();\n\n if (Array.isArray(discounts) && discounts.length > 0) {\n discounts.splice(discounts.indexOf(discount), 1);\n this.setDiscounts(discounts);\n }\n },\n\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\n this.setDiscounts(productDiscounts);\n },\n\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\n return this.getDiscounts(def);\n },\n\n serialize(): Record {\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\n const discounts = this.getDiscounts();\n\n if (discounts) {\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\n }\n\n return map;\n },\n };\n\n return defineEntity(props as ProductProps, methods, Product);\n};\n\nexport default Product;\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\nexport default class NlicError extends AxiosError {\n isNlicError = true;\n\n constructor(\n message?: string,\n code?: string,\n config?: InternalAxiosRequestConfig,\n request?: unknown,\n response?: AxiosResponse,\n stack?: string,\n ) {\n super(message, code, config, request, response);\n this.name = 'NlicError';\n\n if (stack) {\n this.stack = stack;\n }\n\n Object.setPrototypeOf(this, NlicError.prototype);\n }\n}\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\n// utils\nimport { set, get } from '@/utils/helpers';\n\nconst ProductDiscount = function (\n properties: ProductDiscountProps = {} as ProductDiscountProps,\n): ProductDiscountEntity {\n const props: ProductDiscountProps = { ...properties };\n\n if (props.amountFix && props.amountPercent) {\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\n }\n\n const methods: ProductDiscountMethods = {\n setTotalPrice(this: void, totalPrice: number): void {\n set(props, 'totalPrice', totalPrice);\n },\n\n getTotalPrice(this: void, def?: D): number | D {\n return get(props, 'totalPrice', def) as number | D;\n },\n\n setCurrency(currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setAmountFix(this: void, amountFix: number): void {\n set(props, 'amountFix', amountFix);\n },\n\n getAmountFix(this: void, def?: D): number | D {\n return get(props, 'amountFix', def) as number | D;\n },\n\n setAmountPercent(this: void, amountPercent: number): void {\n set(props, 'amountPercent', amountPercent);\n },\n\n getAmountPercent(this: void, def?: D): number | D {\n return get(props, 'amountPercent', def) as number | D;\n },\n\n toString() {\n const total = this.getTotalPrice();\n const currency = this.getCurrency();\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\n\n return total && currency && amount ? `${total};${currency};${amount}` : '';\n },\n };\n\n return defineEntity(props, methods, ProductDiscount, {\n set: (obj, prop) => {\n if (prop === 'amountFix') {\n delete obj.amountPercent;\n }\n\n if (prop === 'amountPercent') {\n delete obj.amountFix;\n }\n },\n });\n};\n\nexport default ProductDiscount;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Product from '@/entities/Product';\nimport ProductDiscount from '@/entities/ProductDiscount';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductProps } from '@/types/entities/Product';\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\n delete props.discount;\n\n if (discounts) {\n props.discounts = discounts.map((d) => ProductDiscount(d));\n }\n\n return Product(props as ProductProps);\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\n\n// types\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Product module entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\n * licensee for the product.\n * @property string number\n *\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\n * product module.\n * @property boolean active\n *\n * Product module name that is visible to the end customers in NetLicensing Shop.\n * @property string name\n *\n * Licensing model applied to this product module. Defines what license templates can be\n * configured for the product module and how licenses for this product module are processed during validation.\n * @property string licensingModel\n *\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\n * @property number maxCheckoutValidity\n *\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\n * @property number yellowThreshold\n *\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\n * @property number redThreshold\n */\n\nconst ProductModule = function (\n properties: ProductModuleProps = {} as ProductModuleProps,\n): ProductModuleEntity {\n const props: ProductModuleProps = { ...properties };\n\n const methods: ProductModuleMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setLicensingModel(licensingModel: LicensingModelValues): void {\n set(props, 'licensingModel', licensingModel);\n },\n\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\n },\n\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\n },\n\n getMaxCheckoutValidity(this: void, def?: D): number | D {\n return get(props, 'maxCheckoutValidity', def) as number | D;\n },\n\n setYellowThreshold(this: void, yellowThreshold: number): void {\n set(props, 'yellowThreshold', yellowThreshold);\n },\n\n getYellowThreshold(this: void, def?: D): number | D {\n return get(props, 'yellowThreshold', def) as number | D;\n },\n\n setRedThreshold(this: void, redThreshold: number): void {\n set(props, 'redThreshold', redThreshold);\n },\n\n getRedThreshold(this: void, def?: D): number | D {\n return get(props, 'redThreshold', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\n};\n\nexport default ProductModule;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport ProductModule from '@/entities/ProductModule';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\n\nexport default (item?: Item) => ProductModule(itemToObject(item));\n","/**\n * Token\n *\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n *\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\nimport { TokenTypeValues } from '@/types/constants/TokenType';\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\n const props: TokenProps = { ...properties };\n\n const methods: TokenMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setExpirationTime(this: void, expirationTime: Date): void {\n set(props, 'expirationTime', expirationTime);\n },\n\n getExpirationTime(this: void, def?: D): Date | D {\n return get(props, 'expirationTime', def) as Date | D;\n },\n\n setTokenType(this: void, tokenType: TokenTypeValues): void {\n set(props, 'tokenType', tokenType);\n },\n\n getTokenType(this: void, def?: D): TokenTypeValues | D {\n return get(props, 'tokenType', def) as TokenTypeValues | D;\n },\n\n setLicenseeNumber(this: void, licenseeNumber: string): void {\n set(props, 'licenseeNumber', licenseeNumber);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setAction(this: void, action: string): void {\n set(props, 'action', action);\n },\n\n getAction(this: void, def?: D): string | D {\n return get(props, 'action', def) as string | D;\n },\n\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\n set(props, 'apiKeyRole', apiKeyRole);\n },\n\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\n },\n\n setBundleNumber(this: void, bundleNumber: string): void {\n set(props, 'bundleNumber', bundleNumber);\n },\n\n getBundleNumber(this: void, def?: D): string | D {\n return get(props, 'bundleNumber', def) as string | D;\n },\n\n setBundlePrice(this: void, bundlePrice: number): void {\n set(props, 'bundlePrice', bundlePrice);\n },\n\n getBundlePrice(this: void, def?: D): number | D {\n return get(props, 'bundlePrice', def) as number | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\n },\n\n getPredefinedShoppingItem(this: void, def?: D): string | D {\n return get(props, 'predefinedShoppingItem', def) as string | D;\n },\n\n setSuccessURL(this: void, successURL: string): void {\n set(props, 'successURL', successURL);\n },\n\n getSuccessURL(this: void, def?: D): string | D {\n return get(props, 'successURL', def) as string | D;\n },\n\n setSuccessURLTitle(this: void, successURLTitle: string): void {\n set(props, 'successURLTitle', successURLTitle);\n },\n\n getSuccessURLTitle(this: void, def?: D): string | D {\n return get(props, 'successURLTitle', def) as string | D;\n },\n\n setCancelURL(this: void, cancelURL: string): void {\n set(props, 'cancelURL', cancelURL);\n },\n\n getCancelURL(this: void, def?: D): string | D {\n return get(props, 'cancelURL', def) as string | D;\n },\n\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\n set(props, 'cancelURLTitle', cancelURLTitle);\n },\n\n getCancelURLTitle(this: void, def?: D): string | D {\n return get(props, 'cancelURLTitle', def) as string | D;\n },\n\n getShopURL(this: void, def?: D): string | D {\n return get(props, 'shopURL', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['shopURL'] });\n },\n };\n\n return defineEntity(props as TokenProps, methods, Token);\n};\n\nexport default Token;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\nimport Token from '@/entities/Token';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TokenProps } from '@/types/entities/Token';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { expirationTime } = props;\n\n if (expirationTime && typeof expirationTime === 'string') {\n props.expirationTime = new Date(expirationTime);\n }\n\n return Token(props as TokenProps);\n};\n","// types\nimport type { LicenseEntity } from '@/types/entities/License';\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\nimport type { TransactionEntity } from '@/types/entities/Transaction';\n\n/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\n transaction: TransactionEntity;\n license: LicenseEntity;\n\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\n this.transaction = transaction;\n this.license = license;\n }\n\n setTransaction(transaction: TransactionEntity): void {\n this.transaction = transaction;\n }\n\n getTransaction(): TransactionEntity {\n return this.transaction;\n }\n\n setLicense(license: LicenseEntity): void {\n this.license = license;\n }\n\n getLicense(): LicenseEntity {\n return this.license;\n }\n}\n\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\n new LicenseTransactionJoin(transaction, license);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// entity factory\nimport defineEntity from '@/entities/defineEntity';\n\n// types\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n/**\n * Transaction entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\n * always generated by NetLicensing.\n * @property string number\n *\n * always true for transactions\n * @property boolean active\n *\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\n * @property string status\n *\n * \"SHOP\". AUTO transaction for internal use only.\n * @property string source\n *\n * grand total for SHOP transaction (see source).\n * @property number grandTotal\n *\n * discount for SHOP transaction (see source).\n * @property number discount\n *\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\n * @property string currency\n *\n * Date created. Optional.\n * @property string dateCreated\n *\n * Date closed. Optional.\n * @property string dateClosed\n */\n\nconst Transaction = function (\n properties: TransactionProps = {} as TransactionProps,\n): TransactionEntity {\n const props: TransactionProps = { ...properties };\n\n const methods: TransactionMethods = {\n setActive(this: void, active: boolean) {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setStatus(this: void, status: TransactionStatusValues): void {\n set(props, 'status', status);\n },\n\n getStatus(this: void, def?: D): TransactionStatusValues | D {\n return get(props, 'status', def) as TransactionStatusValues | D;\n },\n\n setSource(this: void, source: TransactionSourceValues): void {\n set(props, 'source', source);\n },\n getSource(this: void, def?: D): TransactionSourceValues | D {\n return get(props, 'source', def) as TransactionSourceValues | D;\n },\n setGrandTotal(this: void, grandTotal: number): void {\n set(props, 'grandTotal', grandTotal);\n },\n getGrandTotal(this: void, def?: D): number | D {\n return get(props, 'grandTotal', def) as number | D;\n },\n\n setDiscount(this: void, discount: number): void {\n set(props, 'discount', discount);\n },\n\n getDiscount(this: void, def?: D): number | D {\n return get(props, 'discount', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setDateCreated(this: void, dateCreated: Date): void {\n set(props, 'dateCreated', dateCreated);\n },\n\n getDateCreated(this: void, def?: D): Date | D {\n return get(props, 'dateCreated', def) as Date | D;\n },\n\n setDateClosed(this: void, dateCreated: Date): void {\n set(props, 'dateClosed', dateCreated);\n },\n\n getDateClosed(this: void, def?: D): Date | D {\n return get(props, 'dateClosed', def) as Date | D;\n },\n\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\n set(props, 'paymentMethod', paymentMethod);\n },\n\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\n },\n\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\n set(props, 'licenseTransactionJoins', joins);\n },\n\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\n },\n\n serialize(this: void) {\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\n },\n };\n\n return defineEntity(props as TransactionProps, methods, Transaction);\n};\n\nexport default Transaction;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport itemToObject from '@/converters/itemToObject';\n\n// entities\nimport License from '@/entities/License';\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\nimport Transaction from '@/entities/Transaction';\n\n// types\nimport { Item } from '@/types/api/response';\nimport { TransactionProps } from '@/types/entities/Transaction';\n\nexport default (item?: Item) => {\n const props = itemToObject>(item);\n\n const { dateCreated, dateClosed } = props;\n\n if (dateCreated && typeof dateCreated === 'string') {\n props.dateCreated = new Date(dateCreated);\n }\n\n if (dateClosed && typeof dateClosed === 'string') {\n props.dateClosed = new Date(dateClosed);\n }\n\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\n\n delete props.licenseTransactionJoin;\n\n if (licenseTransactionJoins) {\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\n const transaction = Transaction({ number: transactionNumber });\n const license = License({ number: licenseNumber });\n\n return LicenseTransactionJoin(transaction, license);\n });\n }\n\n return Transaction(props as TransactionProps);\n};\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\nimport { Info } from '@/types/api/response';\n\nlet axiosInstance: AxiosInstance = axios.create();\nlet lastResponse: AxiosResponse | null = null;\nlet info: Info[] = [];\n\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\n axiosInstance = instance;\n};\n\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\n\nexport const setLastResponse = (response: AxiosResponse | null): void => {\n lastResponse = response;\n};\n\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\n\nexport const setInfo = (infos: Info[]): void => {\n info = infos;\n};\n\nexport const getInfo = (): Info[] => info;\n","{\n \"name\": \"netlicensing-client\",\n \"version\": \"1.2.39\",\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\n \"keywords\": [\n \"labs64\",\n \"netlicensing\",\n \"licensing\",\n \"licensing-as-a-service\",\n \"license\",\n \"license-management\",\n \"software-license\",\n \"client\",\n \"restful\",\n \"restful-api\",\n \"javascript\",\n \"wrapper\",\n \"api\",\n \"client\"\n ],\n \"license\": \"Apache-2.0\",\n \"author\": \"Labs64 GmbH\",\n \"homepage\": \"https://netlicensing.io\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\n },\n \"bugs\": {\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\n },\n \"contributors\": [\n {\n \"name\": \"Ready Brown\",\n \"email\": \"ready.brown@hotmail.de\",\n \"url\": \"https://github.com/r-brown\"\n },\n {\n \"name\": \"Viacheslav Rudkovskiy\",\n \"email\": \"viachaslau.rudkovski@labs64.de\",\n \"url\": \"https://github.com/v-rudkovskiy\"\n },\n {\n \"name\": \"Andrei Yushkevich\",\n \"email\": \"yushkevich@me.com\",\n \"url\": \"https://github.com/yushkevich\"\n }\n ],\n \"main\": \"dist/index.cjs\",\n \"module\": \"dist/index.mjs\",\n \"types\": \"dist/index.d.ts\",\n \"exports\": {\n \".\": {\n \"types\": \"./dist/index.d.ts\",\n \"import\": \"./dist/index.mjs\",\n \"require\": \"./dist/index.cjs\"\n }\n },\n \"files\": [\n \"dist\"\n ],\n \"scripts\": {\n \"build\": \"tsup\",\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\n \"dev\": \"tsup --watch\",\n \"test\": \"vitest run\",\n \"test:dev\": \"vitest watch\",\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\n \"typecheck\": \"tsc --noEmit\",\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\n },\n \"peerDependencies\": {\n \"axios\": \"^1.9.0\"\n },\n \"dependencies\": {},\n \"devDependencies\": {\n \"@eslint/js\": \"^9.24.0\",\n \"@types/node\": \"^22.14.0\",\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\n \"@typescript-eslint/parser\": \"^8.29.1\",\n \"@vitest/eslint-plugin\": \"^1.1.43\",\n \"axios\": \"^1.9.0\",\n \"eslint\": \"^9.24.0\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"prettier\": \"3.5.3\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"typescript-eslint\": \"^8.29.1\",\n \"vitest\": \"^3.1.1\"\n },\n \"engines\": {\n \"node\": \">= 16.9.0\",\n \"npm\": \">= 8.0.0\"\n },\n \"browserslist\": [\n \"> 1%\",\n \"last 2 versions\",\n \"not ie <= 10\"\n ]\n}\n","export default >(data: T): string => {\n const query: string[] = [];\n\n const build = (obj: unknown, keyPrefix?: string): void => {\n if (obj === null || obj === undefined) {\n return;\n }\n\n if (Array.isArray(obj)) {\n obj.forEach((item) => {\n build(item, keyPrefix ? `${keyPrefix}` : '');\n });\n\n return;\n }\n\n if (obj instanceof Date) {\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\n return;\n }\n\n if (typeof obj === 'object') {\n Object.keys(obj).forEach((key) => {\n const value = obj[key as keyof typeof obj];\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\n });\n\n return;\n }\n\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\n };\n\n build(data);\n\n return query.join('&');\n};\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\n\n// constants\nimport SecurityMode from '@/constants/SecurityMode';\n\n// errors\nimport NlicError from '@/errors/NlicError';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\n// package.json\nimport pkg from '../../../package.json';\n\n// service\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\nimport toQueryString from './toQueryString';\n\nexport default async (\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => {\n const headers: Record = {\n Accept: 'application/json',\n 'X-Requested-With': 'XMLHttpRequest',\n };\n\n // only node.js has a process variable that is of [[Class]] process\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\n }\n\n const req: AxiosRequestConfig = {\n method,\n headers,\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\n responseType: 'json',\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\n return toQueryString(d as Record);\n }\n\n if (!h['NetLicensing-Origin']) {\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\n }\n\n return d;\n },\n };\n\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\n if (req.method === 'post') {\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\n }\n req.data = data;\n } else {\n req.params = data;\n }\n\n switch (context.getSecurityMode()) {\n // Basic Auth\n case SecurityMode.BASIC_AUTHENTICATION:\n {\n if (!context.getUsername()) {\n throw new NlicError('Missing parameter \"username\"');\n }\n\n if (!context.getPassword()) {\n throw new NlicError('Missing parameter \"password\"');\n }\n\n req.auth = {\n username: context.getUsername(),\n password: context.getPassword(),\n };\n }\n break;\n // ApiKey Auth\n case SecurityMode.APIKEY_IDENTIFICATION:\n if (!context.getApiKey()) {\n throw new NlicError('Missing parameter \"apiKey\"');\n }\n\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\n break;\n // without authorization\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\n break;\n default:\n throw new NlicError('Unknown security mode');\n }\n\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\n\n try {\n const response: AxiosResponse = await instance(req);\n const info = response.data.infos?.info || [];\n\n setLastResponse(response);\n setInfo(info);\n\n if (config?.onResponse) {\n config.onResponse(response);\n }\n\n if (info.length > 0) {\n if (config?.onInfo) {\n config.onInfo(info);\n }\n\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\n }\n }\n\n return response;\n } catch (e) {\n const error = e as AxiosError;\n\n const response = error.response;\n const info = (response?.data as NlicResponse)?.infos?.info || [];\n\n setLastResponse(response || null);\n setInfo(info);\n\n if ((e as AxiosError).isAxiosError) {\n let message = (e as AxiosError).message;\n\n if (response?.data && info.length > 0) {\n const eInfo = info.find(({ type }) => type === 'ERROR');\n\n if (eInfo) {\n message = eInfo.value;\n }\n }\n\n throw new NlicError(\n message,\n error.code,\n error.config,\n error.request,\n error.response as AxiosResponse,\n );\n }\n\n throw e;\n }\n};\n","import type { AxiosResponse } from 'axios';\n\n// types\nimport type { NlicResponse } from '@/types/api/response';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ContextInstance } from '@/types/vo/Context';\n\n// service\nimport request from './request';\n\nexport const get = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'get', endpoint, data, config);\n\nexport const post = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'post', endpoint, data, config);\n\nexport const del = (\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n): Promise> => request(context, 'delete', endpoint, data, config);\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\n\n// service\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\nimport { get, post, del } from '@/services/Service/methods';\nimport request from '@/services/Service/request';\nimport toQueryString from '@/services/Service/toQueryString';\n\n// types\nimport { Info, NlicResponse } from '@/types/api/response';\nimport { RequestConfig, IService } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\n\nexport { get, post, del, request, toQueryString };\n\nconst service: IService = {\n setAxiosInstance(this: void, instance: AxiosInstance) {\n setAxiosInstance(instance);\n },\n\n getAxiosInstance(this: void): AxiosInstance {\n return getAxiosInstance();\n },\n\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\n return getLastResponse();\n },\n\n getInfo(this: void): Info[] {\n return getInfo();\n },\n\n get(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return get(context, endpoint, data, config);\n },\n\n post(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return post(context, endpoint, data, config);\n },\n\n delete(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return del(context, endpoint, data, config);\n },\n\n request(\n this: void,\n context: ContextInstance,\n method: Method,\n endpoint: string,\n data?: Record,\n config?: RequestConfig,\n ): Promise> {\n return request(context, method, endpoint, data, config);\n },\n\n toQueryString>(this: void, data: T): string {\n return toQueryString(data);\n },\n};\n\nexport default service;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nconst FILTER_DELIMITER = ';';\nconst FILTER_PAIR_DELIMITER = '=';\n\nexport const encode = (filter: Record): string => {\n return Object.keys(filter)\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\n .join(FILTER_DELIMITER);\n};\n\nexport const decode = (filter: string): Record => {\n const result: Record = {};\n\n filter.split(FILTER_DELIMITER).forEach((v) => {\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\n result[name] = value;\n });\n\n return result;\n};\n\nexport default { encode, decode };\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n\nexport const isDefined = (value: unknown): boolean => {\n return typeof value !== 'undefined' && typeof value !== 'function';\n};\n\nexport const isValid = (value: unknown): boolean => {\n if (!isDefined(value)) {\n return false;\n }\n\n if (typeof value === 'number') {\n return !Number.isNaN(value);\n }\n\n return true;\n};\n\nexport const ensureNotNull = (value: unknown, name: string): void => {\n if (value === null) {\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\n }\n\n if (!isValid(value)) {\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\n }\n};\n\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\n ensureNotNull(value, name);\n\n if (!value) {\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\n }\n};\n\nexport default {\n isDefined,\n isValid,\n ensureNotNull,\n ensureNotEmpty,\n};\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { ItemPagination } from '@/types/api/response';\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\n\nconst Page = function (content: T, pagination?: Partial) {\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\n\n const page: PaginationMethods = {\n getContent(this: void): T {\n return content;\n },\n\n getPagination(this: void): Pagination {\n return {\n pageNumber,\n itemsNumber,\n totalPages,\n totalItems,\n hasNext: totalPages > pageNumber + 1,\n };\n },\n\n getPageNumber(this: void): number {\n return pageNumber;\n },\n\n getItemsNumber(this: void): number {\n return itemsNumber;\n },\n\n getTotalPages(this: void): number {\n return totalPages;\n },\n\n getTotalItems(this: void): number {\n return totalItems;\n },\n\n hasNext(this: void): boolean {\n return totalPages > pageNumber + 1;\n },\n };\n\n return new Proxy(content, {\n get(obj: T, prop: string | symbol, receiver) {\n if (Object.hasOwn(page, prop)) {\n return page[prop as keyof typeof page];\n }\n\n return Reflect.get(obj, prop, receiver);\n },\n\n set(obj, prop, value, receiver) {\n return Reflect.set(obj, prop, value, receiver);\n },\n\n getPrototypeOf() {\n return (Page.prototype as object) || null;\n },\n }) as PageInstance;\n};\n\nexport default Page;\n","/**\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToBundle from '@/converters/itemToBundle';\n\n// services\nimport itemToLicense from '@/converters/itemToLicense';\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\nimport { IBundleService } from '@/types/services/BundleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\nconst type = Constants.Bundle.TYPE;\n\nconst bundleService: IBundleService = {\n /**\n * Gets a bundle by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the bundle number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the bundle object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Returns bundle of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of bundle entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const bundles: BundleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToBundle>(v));\n\n return Page(bundles || [], items as ItemPagination);\n },\n\n /**\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created bundle object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Updates bundle properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param bundle NetLicensing.Bundle\n *\n * (optional) service request config\n * @param config\n *\n * updated bundle in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n bundle: BundleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(bundle, 'bundle');\n\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToBundle>(item);\n },\n\n /**\n * Deletes bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Obtain bundle.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * bundle number\n * @param number string\n *\n * licensee number\n * @param licenseeNumber String\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses\n * @returns {Promise}\n */\n async obtain(\n context: ContextInstance,\n number: string,\n licenseeNumber: string,\n config?: RequestConfig,\n ): Promise>[]> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\n\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\n const items = response.data.items;\n\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\n\n return licenses?.map((v) => itemToLicense>(v)) || [];\n },\n};\n\nexport default bundleService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\n\n// utils\nimport { isValid } from '@/utils/validation';\n\nclass ValidationResults implements ValidationResultsInstance {\n readonly validations: Record;\n ttl?: Date;\n\n constructor() {\n this.validations = {};\n }\n\n getValidators(): Record {\n return this.validations;\n }\n\n setValidation(validation: ProductModuleValidation): this {\n this.validations[validation.productModuleNumber] = validation;\n return this;\n }\n\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.validations[productModuleNumber] || def;\n }\n\n setProductModuleValidation(validation: ProductModuleValidation): this {\n return this.setValidation(validation);\n }\n\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\n return this.getValidation(productModuleNumber, def);\n }\n\n setTtl(ttl: Date | string): this {\n if (!isValid(ttl)) {\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\n }\n\n this.ttl = new Date(ttl);\n return this;\n }\n\n getTtl(): Date | undefined {\n return this.ttl;\n }\n\n toString(): string {\n let data = 'ValidationResult [';\n\n Object.keys(this.validations).forEach((pmNumber) => {\n data += `ProductModule<${pmNumber}>`;\n\n if (pmNumber in this.validations) {\n data += JSON.stringify(this.validations[pmNumber]);\n }\n });\n\n data += ']';\n\n return data;\n }\n}\n\nexport default (): ValidationResultsInstance => new ValidationResults();\n","/**\n * Licensee Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/licensee-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicensee from '@/converters/itemToLicensee';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\nimport { ILicenseeService } from '@/types/services/LicenseeService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\nimport ValidationResults from '@/vo/ValidationResults';\n\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\nconst type = Constants.Licensee.TYPE;\n\nconst licenseeService: ILicenseeService = {\n /**\n * Gets licensee by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the licensee number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the licensee in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of licensees (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseeEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicensee>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new licensee is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created licensee object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licensee, 'licensee');\n\n const data = licensee.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Updates licensee properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licensee NetLicensing.Licensee\n *\n * (optional) service request config\n * @param config\n *\n * return updated licensee in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licensee: LicenseeEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licensee, 'licensee');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicensee>(item);\n },\n\n /**\n * Deletes licensee.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n\n /**\n * Validates active licenses of the licensee.\n * In the case of multiple product modules validation,\n * required parameters indexes will be added automatically.\n * See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\n *\n * @param context NetLicensing.Context\n *\n * licensee number\n * @param number string\n *\n * optional validation parameters. See ValidationParameters and licensing model documentation for\n * details.\n * @param validationParameters NetLicensing.ValidationParameters.\n *\n * (optional) service request config\n * @param config\n *\n * @returns {ValidationResults}\n */\n async validate(\n context: ContextInstance,\n number: string,\n validationParameters?: ValidationParametersInstance,\n config?: RequestConfig,\n ): Promise {\n ensureNotEmpty(number, 'number');\n\n const data: Record = {};\n\n if (validationParameters) {\n const productNumber: string | undefined = validationParameters.productNumber;\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const licenseeProperties = validationParameters.licenseeProperties;\n\n Object.keys(licenseeProperties).forEach((key: string) => {\n data[key] = validationParameters.getLicenseeProperty(key);\n });\n\n if (validationParameters.isForOfflineUse()) {\n data.forOfflineUse = true;\n }\n\n if (validationParameters.isDryRun()) {\n data.dryRun = true;\n }\n\n const parameters = validationParameters.getParameters();\n\n Object.keys(parameters).forEach((pmNumber, i) => {\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\n\n const parameter = parameters[pmNumber];\n\n if (parameter) {\n Object.keys(parameter).forEach((key: string) => {\n data[key + i] = parameter[key];\n });\n }\n });\n }\n\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\n\n const validationResults = ValidationResults();\n\n const ttl = response.data.ttl;\n\n if (ttl) {\n validationResults.setTtl(ttl);\n }\n\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\n\n items?.forEach((v) => {\n validationResults.setValidation(itemToObject(v));\n });\n\n return validationResults;\n },\n\n /**\n * Transfer licenses between licensees.\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the number of the licensee receiving licenses\n * @param number string\n *\n * the number of the licensee delivering licenses\n * @param sourceLicenseeNumber string\n *\n * (optional) service request config\n * @param config\n *\n * @returns {Promise}\n */\n transfer(\n context: ContextInstance,\n number: string,\n sourceLicenseeNumber: string,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\n\n const data = { sourceLicenseeNumber };\n\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\n },\n};\n\nexport default licenseeService;\n","/**\n * JS representation of the License Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicense from '@/converters/itemToLicense';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\nimport { ILicenseService } from '@/types/services/LicenseService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.License.ENDPOINT_PATH;\nconst type = Constants.License.TYPE;\n\nconst licenseService: ILicenseService = {\n /**\n * Gets license by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#get-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Returns licenses of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#licenses-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined\n *\n * (optional) service request config\n * @param config\n *\n * return array of licenses (of all products) or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicense>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#create-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent licensee to which the new license is to be added\n * @param licenseeNumber string\n *\n * license template that the license is created from\n * @param licenseTemplateNumber string\n *\n * For privileged logins specifies transaction for the license creation. For regular logins new\n * transaction always created implicitly, and the operation will be in a separate transaction.\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\n * auto-generated number.\n * @param transactionNumber null|string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created license object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n licenseeNumber: string | null,\n licenseTemplateNumber: string | null,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (licenseeNumber) {\n data.licenseeNumber = licenseeNumber;\n }\n\n if (licenseTemplateNumber) {\n data.licenseTemplateNumber = licenseTemplateNumber;\n }\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Updates license properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#update-license\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\n * operation will be in a separate transaction.\n * @param transactionNumber string|null\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param license NetLicensing.License\n *\n * (optional) service request config\n * @param config\n *\n * return updated license in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transactionNumber: string | null,\n license: LicenseEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(license, 'license');\n\n const data = license.serialize();\n\n if (transactionNumber) {\n data.transactionNumber = transactionNumber;\n }\n\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicense>(item);\n },\n\n /**\n * Deletes license.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-services#delete-license\n *\n * When any license is deleted, corresponding transaction is created automatically.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/license-template-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport {\n LicenseTemplateProps,\n LicenseTemplateEntity,\n SavedLicenseTemplateProps,\n} from '@/types/entities/LicenseTemplate';\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\nconst type = Constants.LicenseTemplate.TYPE;\n\nconst licenseTemplateService: ILicenseTemplateService = {\n /**\n * Gets license template by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the license template number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the license template object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: LicenseTemplateEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicenseTemplate>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new license template object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product module to which the new license template is to be added\n * @param productModuleNumber\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * the newly created license template object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productModuleNumber: string | null,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const data = licenseTemplate.serialize();\n\n if (productModuleNumber) {\n data.productModuleNumber = productModuleNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Updates license template properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param licenseTemplate NetLicensing.LicenseTemplate\n *\n * (optional) service request config\n * @param config\n *\n * updated license template in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n licenseTemplate: LicenseTemplateEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(licenseTemplate, 'licenseTemplate');\n\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToLicenseTemplate>(item);\n },\n\n /**\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * license template number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default licenseTemplateService;\n","/**\n * JS representation of the Notification Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/notification-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToNotification from '@/converters/itemToNotification';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\nimport { INotificationService } from '@/types/services/NotificationService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\nconst type = Constants.Notification.TYPE;\n\nconst notificationService: INotificationService = {\n /**\n * Gets notification by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#get-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the notification number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the notification object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Returns notifications of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of notification entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: NotificationEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToNotification>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new notification with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#create-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created notification object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, endpoint, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Updates notification properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#update-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param notification NetLicensing.Notification\n *\n * (optional) service request config\n * @param config\n *\n * updated notification in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n notification: NotificationEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(notification, 'notification');\n\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToNotification>(item);\n },\n\n /**\n * Deletes notification.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * notification number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default notificationService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\nconst type = Constants.PaymentMethod.TYPE;\n\nconst paymentMethodService: IPaymentMethodService = {\n /**\n * Gets payment method by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the payment method in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n\n /**\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of payment method entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: PaymentMethodEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToPaymentMethod>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Updates payment method properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the payment method number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param paymentMethod NetLicensing.PaymentMethod\n *\n * (optional) service request config\n * @param config\n *\n * return updated payment method in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n paymentMethod: PaymentMethodEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(paymentMethod, 'paymentMethod');\n\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToPaymentMethod>(item);\n },\n};\n\nexport default paymentMethodService;\n","/**\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-module-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProductModule from '@/converters/itemToProductModule';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\nconst type = Constants.ProductModule.TYPE;\n\nconst productModuleService: IProductModuleService = {\n /**\n * Gets product module by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product module number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product module object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product modules entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductModuleEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProductModule>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product module object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * parent product to which the new product module is to be added\n * @param productNumber string\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * the newly created product module object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n productNumber: string | null,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(productModule, 'productModule');\n\n const data = productModule.serialize();\n\n if (productNumber) {\n data.productNumber = productNumber;\n }\n\n const response = await Service.post(context, endpoint, data, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Updates product module properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param productModule NetLicensing.ProductModule\n *\n * (optional) service request config\n * @param config\n *\n * updated product module in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n productModule: ProductModuleEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(productModule, 'productModule');\n\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProductModule>(item);\n },\n\n /**\n * Deletes product module.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product module number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productModuleService;\n","/**\n * JS representation of the Product Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/product-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToProduct from '@/converters/itemToProduct';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\nimport { IProductService } from '@/types/services/ProductService';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Product.ENDPOINT_PATH;\nconst type = Constants.Product.TYPE;\n\nconst productService: IProductService = {\n /**\n * Gets product by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#get-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the product number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the product object in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Returns products of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#products-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|null\n *\n * (optional) service request config\n * @param config\n *\n * array of product entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: ProductEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProduct>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new product with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#create-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created product object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, endpoint, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Updates product properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#update-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param product NetLicensing.Product\n *\n * (optional) service request config\n * @param config\n *\n * updated product in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n product: ProductEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(product, 'product');\n\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToProduct>(item);\n },\n\n /**\n * Deletes product.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/product-services#delete-product\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * product number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default productService;\n","/**\n * JS representation of the Token Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/token-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport { AxiosResponse } from 'axios';\n\n// constants\nimport Constants from '@/constants';\n\n// converters\nimport itemToToken from '@/converters/itemToToken';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\nimport { RequestConfig } from '@/types/services/Service';\nimport { ITokenService } from '@/types/services/TokenService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Token.ENDPOINT_PATH;\nconst type = Constants.Token.TYPE;\n\nconst tokenService: ITokenService = {\n /**\n * Gets token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#get-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number\n *\n * (optional) service request config\n * @param config\n *\n * return the token in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Returns tokens of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#tokens-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string|undefined|null\n *\n * (optional) service request config\n * @param config\n *\n * array of token entities or empty array if nothing found.\n * @return array\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TokenEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToToken>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new token.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context Context\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param token Token\n *\n * (optional) service request config\n * @param config\n *\n * return created token in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n token: TokenEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(token, 'token');\n\n const response = await Service.post(context, endpoint, token.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToToken>(item);\n },\n\n /**\n * Delete token by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/token-services#delete-token\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the token number\n * @param number string\n *\n * if true, any entities that depend on the one being deleted will be deleted too\n * @param forceCascade boolean\n *\n * (optional) service request config\n * @param config\n *\n * return boolean state of delete in promise\n * @returns {Promise}\n */\n delete(\n context: ContextInstance,\n number: string,\n forceCascade?: boolean,\n config?: RequestConfig,\n ): Promise> {\n ensureNotEmpty(number, 'number');\n\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\n },\n};\n\nexport default tokenService;\n","/**\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/transaction-services\n *\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToTransaction from '@/converters/itemToTransaction';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport type { ItemPagination } from '@/types/api/response';\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\nimport type { RequestConfig } from '@/types/services/Service';\nimport type { ITransactionService } from '@/types/services/TransactionService';\nimport type { ContextInstance } from '@/types/vo/Context';\nimport type { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\nconst type = Constants.Transaction.TYPE;\n\nconst transactionService: ITransactionService = {\n /**\n * Gets transaction by its number.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * the transaction number\n * @param number string\n *\n * (optional) service request config\n * @param config\n *\n * return the transaction in promise\n * @returns {Promise}\n */\n async get(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter string\n *\n * (optional) service request config\n * @param config\n *\n * array of transaction entities or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async list(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise>[]>> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const list: TransactionEntity>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToTransaction>(v));\n\n return Page(list || [], items as ItemPagination);\n },\n\n /**\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * non-null properties will be taken for the new object, null properties will either stay null, or will\n * be set to a default value, depending on property.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return the newly created transaction object in promise\n * @returns {Promise}\n */\n async create(\n context: ContextInstance,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n\n /**\n * Updates transaction properties.See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * transaction number\n * @param number string\n *\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\n * @param transaction NetLicensing.Transaction\n *\n * (optional) service request config\n * @param config\n *\n * return updated transaction in promise.\n * @returns {Promise}\n */\n async update(\n context: ContextInstance,\n number: string,\n transaction: TransactionEntity,\n config?: RequestConfig,\n ): Promise>> {\n ensureNotEmpty(number, 'number');\n ensureNotNull(transaction, 'transaction');\n\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\n const item = response.data.items?.item.find((v) => v.type === type);\n\n return itemToTransaction>(item);\n },\n};\n\nexport default transactionService;\n","/**\n * JS representation of the Utility Service. See NetLicensingAPI for details:\n * https://netlicensing.io/wiki/utility-services\n *\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport Constants from '@/constants';\n\n// converters\nimport itemToCountry from '@/converters/itemToCountry';\nimport itemToObject from '@/converters/itemToObject';\n\n// services\nimport Service from '@/services/Service';\n\n// types\nimport { ItemPagination } from '@/types/api/response';\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\nimport { CountryEntity } from '@/types/entities/Country';\nimport { RequestConfig } from '@/types/services/Service';\nimport { IUtilityService } from '@/types/services/UtilityService';\nimport { ContextInstance } from '@/types/vo/Context';\nimport { PageInstance } from '@/types/vo/Page';\n\n// utils\nimport { encode } from '@/utils/filter';\n\n// vo\nimport Page from '@/vo/Page';\n\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\n\nconst utilityService: IUtilityService = {\n /**\n * Returns all license types. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license types or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSE_TYPE;\n\n const licenseTypes: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all license models. See NetLicensingAPI for details:\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\n *\n * determines the vendor on whose behalf the call is performed\n * @param context NetLicensing.Context\n *\n * (optional) service request config\n * @param config\n *\n * array of available license models or empty array if nothing found in promise.\n * @returns {Promise}\n */\n async listLicensingModels(\n context: ContextInstance,\n config?: RequestConfig,\n ): Promise> {\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\n\n const response = await Service.get(context, endpoint, undefined, config);\n const items = response.data.items;\n\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\n\n const licensingModels: string[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToObject<{ name: string }>(v).name);\n\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\n },\n\n /**\n * Returns all countries.\n *\n * determines the vendor on whose behalf the call is performed\n * @param context\n *\n * reserved for the future use, must be omitted / set to NULL\n * @param filter\n *\n * (optional) service request config\n * @param config\n *\n * collection of available countries or null/empty list if nothing found in promise.\n * @returns {Promise}\n */\n async listCountries(\n context: ContextInstance,\n filter?: Record | string | null,\n config?: RequestConfig,\n ): Promise> {\n const data: { [Constants.FILTER]: string } = {};\n\n if (filter) {\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\n }\n\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\n\n const response = await Service.get(context, endpoint, data, config);\n const items = response.data.items;\n\n const type = Constants.Utility.COUNTRY_TYPE;\n\n const countries: CountryEntity[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToCountry(v));\n\n return Page(countries || [], items as ItemPagination);\n },\n};\n\nexport default utilityService;\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\nimport SecurityModeEnum from '@/constants/SecurityMode';\n\n// types\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\n\nclass Context implements ContextInstance {\n baseUrl: string;\n securityMode: SecurityModeValues;\n username?: string;\n password?: string;\n apiKey?: string;\n publicKey?: string;\n\n constructor(props?: ContextConfig) {\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\n this.username = props?.username;\n this.password = props?.password;\n this.apiKey = props?.apiKey;\n this.publicKey = props?.publicKey;\n }\n\n setBaseUrl(baseUrl: string): this {\n this.baseUrl = baseUrl;\n return this;\n }\n\n getBaseUrl(): string {\n return this.baseUrl;\n }\n\n setSecurityMode(securityMode: SecurityModeValues): this {\n this.securityMode = securityMode;\n return this;\n }\n\n getSecurityMode(): SecurityModeValues {\n return this.securityMode;\n }\n\n setUsername(username: string): this {\n this.username = username;\n return this;\n }\n\n getUsername(def?: D): string | D {\n return (this.username || def) as string | D;\n }\n\n setPassword(password: string): this {\n this.password = password;\n return this;\n }\n\n getPassword(def?: D): string | D {\n return (this.password || def) as string | D;\n }\n\n setApiKey(apiKey: string): this {\n this.apiKey = apiKey;\n return this;\n }\n\n getApiKey(def?: D): string | D {\n return (this.apiKey || def) as string | D;\n }\n\n setPublicKey(publicKey: string): this {\n this.publicKey = publicKey;\n return this;\n }\n\n getPublicKey(def?: D): string | D {\n return (this.publicKey || def) as string | D;\n }\n}\n\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport {\n ValidationParametersInstance,\n Parameter,\n Parameters,\n LicenseeProperties,\n} from '@/types/vo/ValidationParameters';\n\nclass ValidationParameters implements ValidationParametersInstance {\n productNumber?: string;\n dryRun?: boolean;\n forOfflineUse?: boolean;\n licenseeProperties: LicenseeProperties;\n parameters: Parameters;\n\n constructor() {\n this.parameters = {};\n this.licenseeProperties = {};\n }\n\n setProductNumber(productNumber: string): this {\n this.productNumber = productNumber;\n return this;\n }\n\n getProductNumber(): string | undefined {\n return this.productNumber;\n }\n\n setLicenseeName(licenseeName: string): this {\n this.licenseeProperties.licenseeName = licenseeName;\n return this;\n }\n\n getLicenseeName(): string | undefined {\n return this.licenseeProperties.licenseeName;\n }\n\n setLicenseeSecret(licenseeSecret: string): this {\n this.licenseeProperties.licenseeSecret = licenseeSecret;\n return this;\n }\n\n getLicenseeSecret(): string | undefined {\n return this.licenseeProperties.licenseeSecret;\n }\n\n getLicenseeProperties(): LicenseeProperties {\n return this.licenseeProperties;\n }\n\n setLicenseeProperty(key: string, value: string): this {\n this.licenseeProperties[key] = value;\n return this;\n }\n\n getLicenseeProperty(key: string, def?: D): string | D {\n return (this.licenseeProperties[key] || def) as string | D;\n }\n\n setForOfflineUse(forOfflineUse: boolean): this {\n this.forOfflineUse = forOfflineUse;\n return this;\n }\n\n isForOfflineUse() {\n return !!this.forOfflineUse;\n }\n\n setDryRun(dryRun: boolean): this {\n this.dryRun = dryRun;\n return this;\n }\n\n isDryRun(): boolean {\n return !!this.dryRun;\n }\n\n getParameters(): Parameters {\n return this.parameters;\n }\n\n setParameter(productModuleNumber: string, parameter: Parameter): this {\n this.parameters[productModuleNumber] = parameter;\n return this;\n }\n\n getParameter(productModuleNumber: string): Parameter | undefined {\n return this.parameters[productModuleNumber];\n }\n\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\n return this.getParameter(productModuleNumber);\n }\n\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\n return this.setParameter(productModuleNumber, productModuleParameters);\n }\n}\n\nexport default (): ValidationParametersInstance => new ValidationParameters();\n"],"mappings":"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","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/src/types/entities/Licensee.ts b/src/types/entities/Licensee.ts index cf4f3f5..0c14256 100644 --- a/src/types/entities/Licensee.ts +++ b/src/types/entities/Licensee.ts @@ -8,18 +8,26 @@ import { RequiredProps } from '@/types'; import type { Entity } from '@/types/entities/defineEntity'; +export interface WarningLevelSummary { + RED: string[]; + YELLOW: string[]; + GREEN: string[]; +} + export type LicenseeProps = { active?: boolean; number?: string; name?: string; markedForTransfer?: boolean; productNumber?: string; + aliases?: string[]; readonly inUse?: boolean; + readonly warningLevelSummary?: WarningLevelSummary; } & T; export type SavedLicenseeProps = RequiredProps< LicenseeProps, - 'active' | 'number' | 'productNumber' + 'active' | 'number' | 'productNumber' | 'inUse' | 'warningLevelSummary' > & LicenseeProps; From d89aa673bba2b01d31ae7decb38690f1fcace0d6 Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Wed, 4 Feb 2026 15:24:43 +0200 Subject: [PATCH 2/6] add WarningLevelSummary interface add Bundle "productNumber" prop --- src/entities/Bundle.ts | 19 ++++++++++++++++--- src/types/entities/Bundle.ts | 8 ++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/src/entities/Bundle.ts b/src/entities/Bundle.ts index c7dbb04..f2bcede 100644 --- a/src/entities/Bundle.ts +++ b/src/entities/Bundle.ts @@ -87,6 +87,14 @@ const Bundle = function (properties: BundleProps = {} as Bu return get(props, 'currency', def) as string | D; }, + setProductNumber(number: string) { + set(props, 'productNumber', number); + }, + + getProductNumber(def?: D): string | D { + return get(props, 'productNumber', def) as string | D; + }, + setLicenseTemplateNumbers(this: void, numbers: string[]): void { set(props, 'licenseTemplateNumbers', numbers); }, @@ -110,13 +118,18 @@ const Bundle = function (properties: BundleProps = {} as Bu props.licenseTemplateNumbers = numbers; }, + getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D { + return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D; + }, + serialize(this: void): Record { + const cast: Record = {}; + if (props.licenseTemplateNumbers) { - const licenseTemplateNumbers = props.licenseTemplateNumbers.join(','); - return serialize({ ...props, licenseTemplateNumbers }); + cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(','); } - return serialize(props); + return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] }); }, }; diff --git a/src/types/entities/Bundle.ts b/src/types/entities/Bundle.ts index 701ee03..065f6ff 100644 --- a/src/types/entities/Bundle.ts +++ b/src/types/entities/Bundle.ts @@ -13,7 +13,9 @@ export type BundleProps = T & { name?: string; price?: number; currency?: string; + productNumber?: string; licenseTemplateNumbers?: string[]; + readonly staleLicenseTemplateNumbers?: string[]; }; export type SavedBundleProps = RequiredProps & @@ -40,6 +42,10 @@ export interface BundleMethods { getCurrency(def?: D): string | D; + setProductNumber(number: string): void; + + getProductNumber(def?: D): string | D; + setLicenseTemplateNumbers(numbers: string[]): void; getLicenseTemplateNumbers(def?: D): string[] | D; @@ -48,6 +54,8 @@ export interface BundleMethods { removeLicenseTemplateNumber(number: string): void; + getStaleLicenseTemplateNumbers(def?: D): string[] | D; + serialize(): Record; } From f8191a9ae4ed2dba74cfca5fb2aa78d7787dc985 Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Tue, 17 Feb 2026 15:31:40 +0200 Subject: [PATCH 3/6] simplify types --- dist/index.d.mts | 55 ++++++------------- dist/index.d.ts | 55 ++++++------------- dist/index.global.js | 10 ++-- dist/index.global.js.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/index.mjs | 2 +- dist/index.mjs.map | 2 +- src/converters/itemToTransaction.ts | 4 +- src/entities/License.ts | 35 ++---------- src/entities/LicenseTemplate.ts | 47 ++-------------- src/entities/ProductModule.ts | 30 ++-------- src/entities/Transaction.ts | 10 +++- src/types/constants/LicenseType.ts | 3 +- src/types/constants/LicensingModel.ts | 2 +- src/types/entities/License.ts | 31 +---------- src/types/entities/LicenseTemplate.ts | 26 --------- src/types/entities/ProductModule.ts | 17 ------ src/types/entities/index.ts | 1 + test/specs/converters/itemToLicense.spec.ts | 16 ++++-- .../converters/itemToLicenseTemplate.spec.ts | 10 +++- .../converters/itemToProductModule.spec.ts | 7 ++- test/specs/entities/License.spec.ts | 38 +++++-------- test/specs/entities/LicenseTemplate.spec.ts | 26 +++++---- test/specs/entities/ProductModule.spec.ts | 16 +++--- 25 files changed, 142 insertions(+), 307 deletions(-) diff --git a/dist/index.d.mts b/dist/index.d.mts index b6de828..bf0693a 100644 --- a/dist/index.d.mts +++ b/dist/index.d.mts @@ -451,6 +451,7 @@ type TransactionStatusKeys = keyof typeof TransactionStatus; type TransactionStatusValues = (typeof TransactionStatus)[TransactionStatusKeys]; type RequiredProps = Required>; +type DateField = Date | 'now'; /** * @author Labs64 @@ -512,10 +513,7 @@ type LicenseProps = { hidden?: boolean; licenseeNumber?: string; licenseTemplateNumber?: string; - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - startDate?: Date | 'now'; - parentfeature?: string; + productModuleNumber?: string; readonly inUse?: boolean; } & T; type SavedLicenseProps = RequiredProps & LicenseProps; @@ -536,14 +534,8 @@ interface LicenseMethods { getLicenseeNumber(def?: D): string | D; setLicenseTemplateNumber(number: string): void; getLicenseTemplateNumber(def?: D): string | D; - setTimeVolume(timeVolume: number): void; - getTimeVolume(def?: D): number | D; - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - setStartDate(startDate: Date | 'now'): void; - getStartDate(def?: D): Date | 'now' | D; - setParentfeature(parentfeature?: string): void; - getParentfeature(def?: D): string | D; + setProductModuleNumber(number: string): void; + getProductModuleNumber(def?: D): string | D; serialize(): Record; } type LicenseEntity = Entity, LicenseMethods>; @@ -603,11 +595,6 @@ type LicenseTemplateProps = { automatic?: boolean; hidden?: boolean; hideLicenses?: boolean; - gracePeriod?: boolean; - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - maxSessions?: number; - quantity?: number; productModuleNumber?: string; readonly inUse?: boolean; } & T; @@ -631,16 +618,6 @@ interface LicenseTemplateMethods { getHidden(def?: D): boolean | D; setHideLicenses(hideLicenses: boolean): void; getHideLicenses(def?: D): boolean | D; - setGracePeriod(gradePeriod: boolean): void; - getGracePeriod(def?: D): boolean | D; - setTimeVolume(timeVolume: number): void; - getTimeVolume(def?: D): number | D; - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - setMaxSessions(maxSessions: number): void; - getMaxSessions(def?: D): number | D; - setQuantity(quantity: number): void; - getQuantity(def?: D): number | D; setProductModuleNumber(productModuleNumber: string): void; getProductModuleNumber(def?: D): string | D; serialize(): Record; @@ -854,11 +831,7 @@ type ProductModuleProps = { number?: string; name?: string; licensingModel?: LicensingModelValues; - maxCheckoutValidity?: number; - yellowThreshold?: number; - redThreshold?: number; productNumber?: string; - nodeSecretMode?: NodeSecretModeValues; readonly inUse?: boolean; } & T; type SavedProductModuleProps = RequiredProps & ProductModuleProps; @@ -871,12 +844,6 @@ interface ProductModuleMethods { getName(def?: D): string | D; setLicensingModel(licensingModel: LicensingModelValues): void; getLicensingModel(def?: D): LicensingModelValues | D; - setMaxCheckoutValidity(maxCheckoutValidity: number): void; - getMaxCheckoutValidity(def?: D): number | D; - setYellowThreshold(yellowThreshold: number): void; - getYellowThreshold(def?: D): number | D; - setRedThreshold(redThreshold: number): void; - getRedThreshold(def?: D): number | D; setProductNumber(productNumber: string): void; getProductNumber(def?: D): string | D; serialize(): Record; @@ -1269,7 +1236,9 @@ type BundleProps = T & { name?: string; price?: number; currency?: string; + productNumber?: string; licenseTemplateNumbers?: string[]; + readonly staleLicenseTemplateNumbers?: string[]; }; type SavedBundleProps = RequiredProps & BundleProps; interface BundleMethods { @@ -1283,10 +1252,13 @@ interface BundleMethods { getPrice(def?: D): number | D; setCurrency(currency: string): void; getCurrency(def?: D): string | D; + setProductNumber(number: string): void; + getProductNumber(def?: D): string | D; setLicenseTemplateNumbers(numbers: string[]): void; getLicenseTemplateNumbers(def?: D): string[] | D; addLicenseTemplateNumber(number: string): void; removeLicenseTemplateNumber(number: string): void; + getStaleLicenseTemplateNumbers(def?: D): string[] | D; serialize(): Record; } type BundleEntity = Entity, BundleMethods>; @@ -1383,6 +1355,13 @@ declare const defineEntity:

; }) => Entity; +/** + * @author Labs64 + * @license Apache-2.0 + * @link https://netlicensing.io + * @copyright 2017 Labs64 NetLicensing + */ + /** * License entity used internally by NetLicensing. * @@ -1801,4 +1780,4 @@ declare const _default$1: () => ValidationParametersInstance; declare const _default: () => ValidationResultsInstance; -export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; +export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type DateField, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; diff --git a/dist/index.d.ts b/dist/index.d.ts index b6de828..bf0693a 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -451,6 +451,7 @@ type TransactionStatusKeys = keyof typeof TransactionStatus; type TransactionStatusValues = (typeof TransactionStatus)[TransactionStatusKeys]; type RequiredProps = Required>; +type DateField = Date | 'now'; /** * @author Labs64 @@ -512,10 +513,7 @@ type LicenseProps = { hidden?: boolean; licenseeNumber?: string; licenseTemplateNumber?: string; - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - startDate?: Date | 'now'; - parentfeature?: string; + productModuleNumber?: string; readonly inUse?: boolean; } & T; type SavedLicenseProps = RequiredProps & LicenseProps; @@ -536,14 +534,8 @@ interface LicenseMethods { getLicenseeNumber(def?: D): string | D; setLicenseTemplateNumber(number: string): void; getLicenseTemplateNumber(def?: D): string | D; - setTimeVolume(timeVolume: number): void; - getTimeVolume(def?: D): number | D; - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - setStartDate(startDate: Date | 'now'): void; - getStartDate(def?: D): Date | 'now' | D; - setParentfeature(parentfeature?: string): void; - getParentfeature(def?: D): string | D; + setProductModuleNumber(number: string): void; + getProductModuleNumber(def?: D): string | D; serialize(): Record; } type LicenseEntity = Entity, LicenseMethods>; @@ -603,11 +595,6 @@ type LicenseTemplateProps = { automatic?: boolean; hidden?: boolean; hideLicenses?: boolean; - gracePeriod?: boolean; - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - maxSessions?: number; - quantity?: number; productModuleNumber?: string; readonly inUse?: boolean; } & T; @@ -631,16 +618,6 @@ interface LicenseTemplateMethods { getHidden(def?: D): boolean | D; setHideLicenses(hideLicenses: boolean): void; getHideLicenses(def?: D): boolean | D; - setGracePeriod(gradePeriod: boolean): void; - getGracePeriod(def?: D): boolean | D; - setTimeVolume(timeVolume: number): void; - getTimeVolume(def?: D): number | D; - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - setMaxSessions(maxSessions: number): void; - getMaxSessions(def?: D): number | D; - setQuantity(quantity: number): void; - getQuantity(def?: D): number | D; setProductModuleNumber(productModuleNumber: string): void; getProductModuleNumber(def?: D): string | D; serialize(): Record; @@ -854,11 +831,7 @@ type ProductModuleProps = { number?: string; name?: string; licensingModel?: LicensingModelValues; - maxCheckoutValidity?: number; - yellowThreshold?: number; - redThreshold?: number; productNumber?: string; - nodeSecretMode?: NodeSecretModeValues; readonly inUse?: boolean; } & T; type SavedProductModuleProps = RequiredProps & ProductModuleProps; @@ -871,12 +844,6 @@ interface ProductModuleMethods { getName(def?: D): string | D; setLicensingModel(licensingModel: LicensingModelValues): void; getLicensingModel(def?: D): LicensingModelValues | D; - setMaxCheckoutValidity(maxCheckoutValidity: number): void; - getMaxCheckoutValidity(def?: D): number | D; - setYellowThreshold(yellowThreshold: number): void; - getYellowThreshold(def?: D): number | D; - setRedThreshold(redThreshold: number): void; - getRedThreshold(def?: D): number | D; setProductNumber(productNumber: string): void; getProductNumber(def?: D): string | D; serialize(): Record; @@ -1269,7 +1236,9 @@ type BundleProps = T & { name?: string; price?: number; currency?: string; + productNumber?: string; licenseTemplateNumbers?: string[]; + readonly staleLicenseTemplateNumbers?: string[]; }; type SavedBundleProps = RequiredProps & BundleProps; interface BundleMethods { @@ -1283,10 +1252,13 @@ interface BundleMethods { getPrice(def?: D): number | D; setCurrency(currency: string): void; getCurrency(def?: D): string | D; + setProductNumber(number: string): void; + getProductNumber(def?: D): string | D; setLicenseTemplateNumbers(numbers: string[]): void; getLicenseTemplateNumbers(def?: D): string[] | D; addLicenseTemplateNumber(number: string): void; removeLicenseTemplateNumber(number: string): void; + getStaleLicenseTemplateNumbers(def?: D): string[] | D; serialize(): Record; } type BundleEntity = Entity, BundleMethods>; @@ -1383,6 +1355,13 @@ declare const defineEntity:

; }) => Entity; +/** + * @author Labs64 + * @license Apache-2.0 + * @link https://netlicensing.io + * @copyright 2017 Labs64 NetLicensing + */ + /** * License entity used internally by NetLicensing. * @@ -1801,4 +1780,4 @@ declare const _default$1: () => ValidationParametersInstance; declare const _default: () => ValidationResultsInstance; -export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; +export { ApiKeyRole, type ApiKeyRoleKeys, type ApiKeyRoleValues, Bundle, type BundleEntity, type BundleMethods, type BundleProps, bundleService as BundleService, _default$g as Constants, _default$2 as Context, type ContextConfig, type ContextInstance, Country, type CountryEntity, type CountryMethods, type CountryProps, type DateField, type Entity, type EntityMethods, type IBundleService, type ILicenseService, type ILicenseTemplateService, type ILicenseeService, type INotificationService, type IPaymentMethodService, type IProductModuleService, type IProductService, type IService, type ITokenService, type ITransactionService, type IUtilityService, type Info, type Item, type ItemPagination, type Items, License, type LicenseEntity, type LicenseMethods, type LicenseProps, licenseService as LicenseService, LicenseTemplate, type LicenseTemplateEntity, type LicenseTemplateMethods, type LicenseTemplateProps, licenseTemplateService as LicenseTemplateService, _default$4 as LicenseTransactionJoin, type LicenseTransactionJoinEntity, type LicenseTransactionJoinMethods, type LicenseTransactionJoinProps, LicenseType, type LicenseTypeKeys, type LicenseTypeValues, Licensee, type LicenseeEntity, type LicenseeMethods, type LicenseeProperties, type LicenseeProps, LicenseeSecretMode, type LicenseeSecretModeKeys, type LicenseeSecretModeValues, licenseeService as LicenseeService, LicensingModel, type LicensingModelKeys, type LicensingModelValues, type List, NlicError, type NlicResponse, NodeSecretMode, type NodeSecretModeKeys, type NodeSecretModeValues, Notification, type NotificationEntity, NotificationEvent, type NotificationEventKeys, type NotificationEventValues, type NotificationMethods, type NotificationProps, NotificationProtocol, type NotificationProtocolKeys, type NotificationProtocolValues, notificationService as NotificationService, Page, type PageInstance, type Pagination, type PaginationMethods, type Parameter, type Parameters, PaymentMethod, type PaymentMethodEntity, PaymentMethodEnum, type PaymentMethodKeys, type PaymentMethodMethods, type PaymentMethodProps, paymentMethodService as PaymentMethodService, type PaymentMethodValues, Product, ProductDiscount, type ProductDiscountEntity, type ProductDiscountMethods, type ProductDiscountProps, type ProductEntity, type ProductMethods, ProductModule, type ProductModuleEntity, type ProductModuleMethods, type ProductModuleProps, productModuleService as ProductModuleService, type ProductModuleValidation, type ProductProps, productService as ProductService, type PropGetEventListener, type PropSetEventListener, type Proto, type RequestConfig, type RequiredProps, type SavedBundleProps, type SavedLicenseProps, type SavedLicenseTemplateProps, type SavedLicenseeProps, type SavedNotificationProps, type SavedPaymentMethodProps, type SavedProductModuleProps, type SavedProductProps, type SavedTokenProps, type SavedTransactionProps, SecurityMode, type SecurityModeKeys, type SecurityModeValues, service as Service, TimeVolumePeriod, type TimeVolumePeriodKeys, type TimeVolumePeriodValues, Token, type TokenEntity, type TokenMethods, type TokenProps, tokenService as TokenService, TokenType, type TokenTypeKeys, type TokenTypeValues, Transaction, type TransactionEntity, type TransactionMethods, type TransactionProps, transactionService as TransactionService, TransactionSource, type TransactionSourceKeys, type TransactionSourceValues, TransactionStatus, type TransactionStatusKeys, type TransactionStatusValues, utilityService as UtilityService, _default$1 as ValidationParameters, type ValidationParametersInstance, _default as ValidationResults, type ValidationResultsInstance, type WarningLevelSummary, defineEntity, ensureNotEmpty, ensureNotNull, decode as filterDecode, encode as filterEncode, isDefined, isValid, _default$f as itemToBundle, _default$e as itemToCountry, _default$d as itemToLicense, _default$b as itemToLicenseTemplate, _default$c as itemToLicensee, _default$a as itemToNotification, itemToObject, _default$9 as itemToPaymentMethod, _default$8 as itemToProduct, _default$7 as itemToProductModule, _default$6 as itemToToken, _default$5 as itemToTransaction, _default$3 as serialize }; diff --git a/dist/index.global.js b/dist/index.global.js index d3099bb..8bbc79c 100644 --- a/dist/index.global.js +++ b/dist/index.global.js @@ -1,7 +1,7 @@ -"use strict";var NetLicensing=(()=>{var At=Object.defineProperty;var Ko=Object.getOwnPropertyDescriptor;var Jo=Object.getOwnPropertyNames;var Go=Object.prototype.hasOwnProperty;var hn=(n,e)=>{for(var o in e)At(n,o,{get:e[o],enumerable:!0})},Wo=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Jo(e))!Go.call(n,r)&&r!==o&&At(n,r,{get:()=>e[r],enumerable:!(t=Ko(e,r))||t.enumerable});return n};var Xo=n=>Wo(At({},"__esModule",{value:!0}),n);var zs={};hn(zs,{ApiKeyRole:()=>Pn,Bundle:()=>qe,BundleService:()=>Mo,Constants:()=>h,Context:()=>zo,Country:()=>He,License:()=>re,LicenseService:()=>Uo,LicenseTemplate:()=>Ye,LicenseTemplateService:()=>ko,LicenseTransactionJoin:()=>ht,LicenseType:()=>Te,Licensee:()=>ze,LicenseeSecretMode:()=>Be,LicenseeService:()=>_o,LicensingModel:()=>yn,NlicError:()=>j,NodeSecretMode:()=>En,Notification:()=>Ke,NotificationEvent:()=>ge,NotificationProtocol:()=>he,NotificationService:()=>jo,Page:()=>x,PaymentMethod:()=>Je,PaymentMethodEnum:()=>Dn,PaymentMethodService:()=>Bo,Product:()=>Ge,ProductDiscount:()=>ft,ProductModule:()=>Tt,ProductModuleService:()=>Fo,ProductService:()=>Vo,SecurityMode:()=>V,Service:()=>f,TimeVolumePeriod:()=>Fe,Token:()=>gt,TokenService:()=>qo,TokenType:()=>Pe,Transaction:()=>Ae,TransactionService:()=>Ho,TransactionSource:()=>Ve,TransactionStatus:()=>ye,UtilityService:()=>$o,ValidationParameters:()=>Yo,ValidationResults:()=>Dt,defineEntity:()=>R,ensureNotEmpty:()=>E,ensureNotNull:()=>v,filterDecode:()=>wo,filterEncode:()=>S,isDefined:()=>cn,isValid:()=>we,itemToBundle:()=>G,itemToCountry:()=>$e,itemToLicense:()=>z,itemToLicenseTemplate:()=>X,itemToLicensee:()=>W,itemToNotification:()=>Q,itemToObject:()=>N,itemToPaymentMethod:()=>se,itemToProduct:()=>ee,itemToProductModule:()=>te,itemToToken:()=>pe,itemToTransaction:()=>ne,serialize:()=>L});var Qo=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Be=Qo;var Zo=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),Te=Zo;var er=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),ge=er;var tr=Object.freeze({WEBHOOK:"WEBHOOK"}),he=tr;var nr=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),V=nr;var or=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),Fe=or;var rr=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),Pe=rr;var sr=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),Ve=sr;var ir=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),ye=ir;var h={LicenseeSecretMode:Be,LicenseType:Te,NotificationEvent:ge,NotificationProtocol:he,SecurityMode:V,TimeVolumePeriod:Fe,TokenType:Pe,TransactionSource:Ve,TransactionStatus:ye,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:Te},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:Pe},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:he,Event:ge},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:ye},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ar=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Pn=ar;var cr=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),yn=cr;var ur=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),En=ur;var dr=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),Dn=dr;var mr=n=>{try{return JSON.parse(n)}catch{return n}},pr=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=mr(t)}),e},lr=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(bn(o))}),e},bn=n=>n?{...pr(n.property),...lr(n.list)}:{},N=bn;var wt=(n,e)=>Object.hasOwn(n,e),m=(n,e,o)=>{n[e]=o},d=(n,e,o)=>wt(n,e)?n[e]:o;var L=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([r,s])=>{if(!t.includes(r)&&typeof s!="function")if(s===void 0)o[r]="";else if(typeof s=="string")o[r]=s;else if(s instanceof Date)o[r]=s.toISOString();else if(typeof s!="object"||s===null)o[r]=String(s);else try{o[r]=JSON.stringify(s)}catch{o[r]=String(s)}}),o};var fr=function(n,e,o={},t){let r={set:[],get:[]};t?.get&&r.get.push(t.get),t?.set&&r.set.push(t.set);let s={set(i,a){m(n,i,a)},get(i,a){return d(n,i,a)},has(i){return wt(n,i)},setProperty(i,a){this.set(i,a)},addProperty(i,a){this.set(i,a)},getProperty(i,a){return this.get(i,a)},hasProperty(i){return this.has(i)},setProperties(i){Object.entries(i).forEach(([a,p])=>{this.set(a,p)})},serialize(){return L(n)}};return new Proxy(n,{get(i,a,p){return Object.hasOwn(e,a)?e[a]:Object.hasOwn(s,a)?s[a]:(r.get.forEach(u=>{u(i,a,p)}),Reflect.get(i,a,p))},set(i,a,p,u){return r.set.forEach(l=>{l(i,a,p,u)}),Reflect.set(i,a,p,u)},getPrototypeOf(){return o.prototype||null}})},R=fr;var vn=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setPrice(t){m(e,"price",t)},getPrice(t){return d(e,"price",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setLicenseTemplateNumbers(t){m(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return d(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:r=[]}=e;r.splice(r.indexOf(t),1),e.licenseTemplateNumbers=r},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return L({...e,licenseTemplateNumbers:t})}return L(e)}},vn)},qe=vn;var G=n=>{let e=N(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),qe(e)};var Nn=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return R(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Nn)},He=Nn;var $e=n=>He(N(n));var Rn=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setPrice(t){m(e,"price",t)},getPrice(t){return d(e,"price",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setHidden(t){m(e,"hidden",t)},getHidden(t){return d(e,"hidden",t)},setLicenseeNumber(t){m(e,"licenseeNumber",t)},getLicenseeNumber(t){return d(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){m(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return d(e,"licenseTemplateNumber",t)},setTimeVolume(t){m(e,"timeVolume",t)},getTimeVolume(t){return d(e,"timeVolume",t)},setTimeVolumePeriod(t){m(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return d(e,"timeVolumePeriod",t)},setStartDate(t){m(e,"startDate",t)},getStartDate(t){return d(e,"startDate",t)},setParentfeature(t){m(e,"parentfeature",t)},getParentfeature(t){return d(e,"parentfeature",t)},serialize(){return L(e,{ignore:["inUse"]})}},Rn)},re=Rn;var z=n=>{let e=N(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),re(e)};var xn=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},setMarkedForTransfer(t){m(e,"markedForTransfer",t)},getMarkedForTransfer(t){return d(e,"markedForTransfer",t)},serialize(){return L(e,{ignore:["inUse"]})}},xn)},ze=xn;var W=n=>ze(N(n));var In=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setLicenseType(t){m(e,"licenseType",t)},getLicenseType(t){return d(e,"licenseType",t)},setPrice(t){m(e,"price",t)},getPrice(t){return d(e,"price",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setAutomatic(t){m(e,"automatic",t)},getAutomatic(t){return d(e,"automatic",t)},setHidden(t){m(e,"hidden",t)},getHidden(t){return d(e,"hidden",t)},setHideLicenses(t){m(e,"hideLicenses",t)},getHideLicenses(t){return d(e,"hideLicenses",t)},setGracePeriod(t){m(e,"gracePeriod",t)},getGracePeriod(t){return d(e,"gracePeriod",t)},setTimeVolume(t){m(e,"timeVolume",t)},getTimeVolume(t){return d(e,"timeVolume",t)},setTimeVolumePeriod(t){m(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return d(e,"timeVolumePeriod",t)},setMaxSessions(t){m(e,"maxSessions",t)},getMaxSessions(t){return d(e,"maxSessions",t)},setQuantity(t){m(e,"quantity",t)},getQuantity(t){return d(e,"quantity",t)},setProductModuleNumber(t){m(e,"productModuleNumber",t)},getProductModuleNumber(t){return d(e,"productModuleNumber",t)},serialize(){return L(e,{ignore:["inUse"]})}},In)},Ye=In;var X=n=>Ye(N(n));var Sn=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setProtocol(t){m(e,"protocol",t)},getProtocol(t){return d(e,"protocol",t)},setEvents(t){m(e,"events",t)},getEvents(t){return d(e,"events",t)},addEvent(t){let r=this.getEvents([]);r.push(t),this.setEvents(r)},setPayload(t){m(e,"payload",t)},getPayload(t){return d(e,"payload",t)},setEndpoint(t){m(e,"endpoint",t)},getEndpoint(t){return d(e,"endpoint",t)},serialize(){let t=L(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},Sn)},Ke=Sn;var Q=n=>{let e=N(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),Ke(e)};var Ln=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)}},Ln)},Je=Ln;var se=n=>Je(N(n));var Cn=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setVersion(t){m(e,"version",t)},getVersion(t){return d(e,"version",t)},setDescription(t){m(e,"description",t)},getDescription(t){return d(e,"description",t)},setLicensingInfo(t){m(e,"licensingInfo",t)},getLicensingInfo(t){return d(e,"licensingInfo",t)},setLicenseeAutoCreate(t){m(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return d(e,"licenseeAutoCreate",t)},setDiscounts(t){m(e,"discounts",t)},getDiscounts(t){return d(e,"discounts",t)},addDiscount(t){let r=this.getDiscounts([]);r.push(t),this.setDiscounts(r)},removeDiscount(t){let r=this.getDiscounts();Array.isArray(r)&&r.length>0&&(r.splice(r.indexOf(t),1),this.setDiscounts(r))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=L(e,{ignore:["discounts","inUse"]}),r=this.getDiscounts();return r&&(t.discount=r.length>0?r.map(s=>s.toString()):""),t}},Cn)},Ge=Cn;function Ee(n,e){return function(){return n.apply(e,arguments)}}var{toString:Tr}=Object.prototype,{getPrototypeOf:Mt}=Object,{iterator:Xe,toStringTag:wn}=Symbol,Qe=(n=>e=>{let o=Tr.call(e);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),B=n=>(n=n.toLowerCase(),e=>Qe(e)===n),Ze=n=>e=>typeof e===n,{isArray:ie}=Array,De=Ze("undefined");function gr(n){return n!==null&&!De(n)&&n.constructor!==null&&!De(n.constructor)&&k(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}var On=B("ArrayBuffer");function hr(n){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(n):e=n&&n.buffer&&On(n.buffer),e}var Pr=Ze("string"),k=Ze("function"),Mn=Ze("number"),et=n=>n!==null&&typeof n=="object",yr=n=>n===!0||n===!1,We=n=>{if(Qe(n)!=="object")return!1;let e=Mt(n);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(wn in n)&&!(Xe in n)},Er=B("Date"),Dr=B("File"),br=B("Blob"),vr=B("FileList"),Nr=n=>et(n)&&k(n.pipe),Rr=n=>{let e;return n&&(typeof FormData=="function"&&n instanceof FormData||k(n.append)&&((e=Qe(n))==="formdata"||e==="object"&&k(n.toString)&&n.toString()==="[object FormData]"))},xr=B("URLSearchParams"),[Ir,Sr,Lr,Cr]=["ReadableStream","Request","Response","Headers"].map(B),Ar=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function be(n,e,{allOwnKeys:o=!1}={}){if(n===null||typeof n>"u")return;let t,r;if(typeof n!="object"&&(n=[n]),ie(n))for(t=0,r=n.length;t0;)if(r=o[t],e===r.toLowerCase())return r;return null}var Z=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Un=n=>!De(n)&&n!==Z;function Ot(){let{caseless:n}=Un(this)&&this||{},e={},o=(t,r)=>{let s=n&&_n(e,r)||r;We(e[s])&&We(t)?e[s]=Ot(e[s],t):We(t)?e[s]=Ot({},t):ie(t)?e[s]=t.slice():e[s]=t};for(let t=0,r=arguments.length;t(be(e,(r,s)=>{o&&k(r)?n[s]=Ee(r,o):n[s]=r},{allOwnKeys:t}),n),Or=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),Mr=(n,e,o,t)=>{n.prototype=Object.create(e.prototype,t),n.prototype.constructor=n,Object.defineProperty(n,"super",{value:e.prototype}),o&&Object.assign(n.prototype,o)},_r=(n,e,o,t)=>{let r,s,i,a={};if(e=e||{},n==null)return e;do{for(r=Object.getOwnPropertyNames(n),s=r.length;s-- >0;)i=r[s],(!t||t(i,n,e))&&!a[i]&&(e[i]=n[i],a[i]=!0);n=o!==!1&&Mt(n)}while(n&&(!o||o(n,e))&&n!==Object.prototype);return e},Ur=(n,e,o)=>{n=String(n),(o===void 0||o>n.length)&&(o=n.length),o-=e.length;let t=n.indexOf(e,o);return t!==-1&&t===o},kr=n=>{if(!n)return null;if(ie(n))return n;let e=n.length;if(!Mn(e))return null;let o=new Array(e);for(;e-- >0;)o[e]=n[e];return o},jr=(n=>e=>n&&e instanceof n)(typeof Uint8Array<"u"&&Mt(Uint8Array)),Br=(n,e)=>{let t=(n&&n[Xe]).call(n),r;for(;(r=t.next())&&!r.done;){let s=r.value;e.call(n,s[0],s[1])}},Fr=(n,e)=>{let o,t=[];for(;(o=n.exec(e))!==null;)t.push(o);return t},Vr=B("HTMLFormElement"),qr=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,t,r){return t.toUpperCase()+r}),An=(({hasOwnProperty:n})=>(e,o)=>n.call(e,o))(Object.prototype),Hr=B("RegExp"),kn=(n,e)=>{let o=Object.getOwnPropertyDescriptors(n),t={};be(o,(r,s)=>{let i;(i=e(r,s,n))!==!1&&(t[s]=i||r)}),Object.defineProperties(n,t)},$r=n=>{kn(n,(e,o)=>{if(k(n)&&["arguments","caller","callee"].indexOf(o)!==-1)return!1;let t=n[o];if(k(t)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},zr=(n,e)=>{let o={},t=r=>{r.forEach(s=>{o[s]=!0})};return ie(n)?t(n):t(String(n).split(e)),o},Yr=()=>{},Kr=(n,e)=>n!=null&&Number.isFinite(n=+n)?n:e;function Jr(n){return!!(n&&k(n.append)&&n[wn]==="FormData"&&n[Xe])}var Gr=n=>{let e=new Array(10),o=(t,r)=>{if(et(t)){if(e.indexOf(t)>=0)return;if(!("toJSON"in t)){e[r]=t;let s=ie(t)?[]:{};return be(t,(i,a)=>{let p=o(i,r+1);!De(p)&&(s[a]=p)}),e[r]=void 0,s}}return t};return o(n,0)},Wr=B("AsyncFunction"),Xr=n=>n&&(et(n)||k(n))&&k(n.then)&&k(n.catch),jn=((n,e)=>n?setImmediate:e?((o,t)=>(Z.addEventListener("message",({source:r,data:s})=>{r===Z&&s===o&&t.length&&t.shift()()},!1),r=>{t.push(r),Z.postMessage(o,"*")}))(`axios@${Math.random()}`,[]):o=>setTimeout(o))(typeof setImmediate=="function",k(Z.postMessage)),Qr=typeof queueMicrotask<"u"?queueMicrotask.bind(Z):typeof process<"u"&&process.nextTick||jn,Zr=n=>n!=null&&k(n[Xe]),c={isArray:ie,isArrayBuffer:On,isBuffer:gr,isFormData:Rr,isArrayBufferView:hr,isString:Pr,isNumber:Mn,isBoolean:yr,isObject:et,isPlainObject:We,isReadableStream:Ir,isRequest:Sr,isResponse:Lr,isHeaders:Cr,isUndefined:De,isDate:Er,isFile:Dr,isBlob:br,isRegExp:Hr,isFunction:k,isStream:Nr,isURLSearchParams:xr,isTypedArray:jr,isFileList:vr,forEach:be,merge:Ot,extend:wr,trim:Ar,stripBOM:Or,inherits:Mr,toFlatObject:_r,kindOf:Qe,kindOfTest:B,endsWith:Ur,toArray:kr,forEachEntry:Br,matchAll:Fr,isHTMLForm:Vr,hasOwnProperty:An,hasOwnProp:An,reduceDescriptors:kn,freezeMethods:$r,toObjectSet:zr,toCamelCase:qr,noop:Yr,toFiniteNumber:Kr,findKey:_n,global:Z,isContextDefined:Un,isSpecCompliantForm:Jr,toJSONObject:Gr,isAsyncFn:Wr,isThenable:Xr,setImmediate:jn,asap:Qr,isIterable:Zr};function ae(n,e,o,t,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=n,this.name="AxiosError",e&&(this.code=e),o&&(this.config=o),t&&(this.request=t),r&&(this.response=r,this.status=r.status?r.status:null)}c.inherits(ae,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:c.toJSONObject(this.config),code:this.code,status:this.status}}});var Bn=ae.prototype,Fn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(n=>{Fn[n]={value:n}});Object.defineProperties(ae,Fn);Object.defineProperty(Bn,"isAxiosError",{value:!0});ae.from=(n,e,o,t,r,s)=>{let i=Object.create(Bn);return c.toFlatObject(n,i,function(p){return p!==Error.prototype},a=>a!=="isAxiosError"),ae.call(i,n.message,e,o,t,r),i.cause=n,i.name=n.name,s&&Object.assign(i,s),i};var y=ae;var tt=null;function _t(n){return c.isPlainObject(n)||c.isArray(n)}function qn(n){return c.endsWith(n,"[]")?n.slice(0,-2):n}function Vn(n,e,o){return n?n.concat(e).map(function(r,s){return r=qn(r),!o&&s?"["+r+"]":r}).join(o?".":""):e}function es(n){return c.isArray(n)&&!n.some(_t)}var ts=c.toFlatObject(c,{},null,function(e){return/^is[A-Z]/.test(e)});function ns(n,e,o){if(!c.isObject(n))throw new TypeError("target must be an object");e=e||new(tt||FormData),o=c.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(D,P){return!c.isUndefined(P[D])});let t=o.metaTokens,r=o.visitor||l,s=o.dots,i=o.indexes,p=(o.Blob||typeof Blob<"u"&&Blob)&&c.isSpecCompliantForm(e);if(!c.isFunction(r))throw new TypeError("visitor must be a function");function u(g){if(g===null)return"";if(c.isDate(g))return g.toISOString();if(!p&&c.isBlob(g))throw new y("Blob is not supported. Use a Buffer instead.");return c.isArrayBuffer(g)||c.isTypedArray(g)?p&&typeof Blob=="function"?new Blob([g]):Buffer.from(g):g}function l(g,D,P){let A=g;if(g&&!P&&typeof g=="object"){if(c.endsWith(D,"{}"))D=t?D:D.slice(0,-2),g=JSON.stringify(g);else if(c.isArray(g)&&es(g)||(c.isFileList(g)||c.endsWith(D,"[]"))&&(A=c.toArray(g)))return D=qn(D),A.forEach(function(_,$){!(c.isUndefined(_)||_===null)&&e.append(i===!0?Vn([D],$,s):i===null?D:D+"[]",u(_))}),!1}return _t(g)?!0:(e.append(Vn(P,D,s),u(g)),!1)}let T=[],b=Object.assign(ts,{defaultVisitor:l,convertValue:u,isVisitable:_t});function I(g,D){if(!c.isUndefined(g)){if(T.indexOf(g)!==-1)throw Error("Circular reference detected in "+D.join("."));T.push(g),c.forEach(g,function(A,O){(!(c.isUndefined(A)||A===null)&&r.call(e,A,c.isString(O)?O.trim():O,D,b))===!0&&I(A,D?D.concat(O):[O])}),T.pop()}}if(!c.isObject(n))throw new TypeError("data must be an object");return I(n),e}var K=ns;function Hn(n){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(n).replace(/[!'()~]|%20|%00/g,function(t){return e[t]})}function $n(n,e){this._pairs=[],n&&K(n,this,e)}var zn=$n.prototype;zn.append=function(e,o){this._pairs.push([e,o])};zn.toString=function(e){let o=e?function(t){return e.call(this,t,Hn)}:Hn;return this._pairs.map(function(r){return o(r[0])+"="+o(r[1])},"").join("&")};var nt=$n;function os(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function ve(n,e,o){if(!e)return n;let t=o&&o.encode||os;c.isFunction(o)&&(o={serialize:o});let r=o&&o.serialize,s;if(r?s=r(e,o):s=c.isURLSearchParams(e)?e.toString():new nt(e,o).toString(t),s){let i=n.indexOf("#");i!==-1&&(n=n.slice(0,i)),n+=(n.indexOf("?")===-1?"?":"&")+s}return n}var Ut=class{constructor(){this.handlers=[]}use(e,o,t){return this.handlers.push({fulfilled:e,rejected:o,synchronous:t?t.synchronous:!1,runWhen:t?t.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){c.forEach(this.handlers,function(t){t!==null&&e(t)})}},kt=Ut;var ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};var Yn=typeof URLSearchParams<"u"?URLSearchParams:nt;var Kn=typeof FormData<"u"?FormData:null;var Jn=typeof Blob<"u"?Blob:null;var Gn={isBrowser:!0,classes:{URLSearchParams:Yn,FormData:Kn,Blob:Jn},protocols:["http","https","file","blob","url","data"]};var Ft={};hn(Ft,{hasBrowserEnv:()=>Bt,hasStandardBrowserEnv:()=>rs,hasStandardBrowserWebWorkerEnv:()=>ss,navigator:()=>jt,origin:()=>is});var Bt=typeof window<"u"&&typeof document<"u",jt=typeof navigator=="object"&&navigator||void 0,rs=Bt&&(!jt||["ReactNative","NativeScript","NS"].indexOf(jt.product)<0),ss=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",is=Bt&&window.location.href||"http://localhost";var C={...Ft,...Gn};function Vt(n,e){return K(n,new C.classes.URLSearchParams,Object.assign({visitor:function(o,t,r,s){return C.isNode&&c.isBuffer(o)?(this.append(t,o.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},e))}function as(n){return c.matchAll(/\w+|\[(\w*)]/g,n).map(e=>e[0]==="[]"?"":e[1]||e[0])}function cs(n){let e={},o=Object.keys(n),t,r=o.length,s;for(t=0;t=o.length;return i=!i&&c.isArray(r)?r.length:i,p?(c.hasOwnProp(r,i)?r[i]=[r[i],t]:r[i]=t,!a):((!r[i]||!c.isObject(r[i]))&&(r[i]=[]),e(o,t,r[i],s)&&c.isArray(r[i])&&(r[i]=cs(r[i])),!a)}if(c.isFormData(n)&&c.isFunction(n.entries)){let o={};return c.forEachEntry(n,(t,r)=>{e(as(t),r,o,0)}),o}return null}var rt=us;function ds(n,e,o){if(c.isString(n))try{return(e||JSON.parse)(n),c.trim(n)}catch(t){if(t.name!=="SyntaxError")throw t}return(o||JSON.stringify)(n)}var qt={transitional:ot,adapter:["xhr","http","fetch"],transformRequest:[function(e,o){let t=o.getContentType()||"",r=t.indexOf("application/json")>-1,s=c.isObject(e);if(s&&c.isHTMLForm(e)&&(e=new FormData(e)),c.isFormData(e))return r?JSON.stringify(rt(e)):e;if(c.isArrayBuffer(e)||c.isBuffer(e)||c.isStream(e)||c.isFile(e)||c.isBlob(e)||c.isReadableStream(e))return e;if(c.isArrayBufferView(e))return e.buffer;if(c.isURLSearchParams(e))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(s){if(t.indexOf("application/x-www-form-urlencoded")>-1)return Vt(e,this.formSerializer).toString();if((a=c.isFileList(e))||t.indexOf("multipart/form-data")>-1){let p=this.env&&this.env.FormData;return K(a?{"files[]":e}:e,p&&new p,this.formSerializer)}}return s||r?(o.setContentType("application/json",!1),ds(e)):e}],transformResponse:[function(e){let o=this.transitional||qt.transitional,t=o&&o.forcedJSONParsing,r=this.responseType==="json";if(c.isResponse(e)||c.isReadableStream(e))return e;if(e&&c.isString(e)&&(t&&!this.responseType||r)){let i=!(o&&o.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(a){if(i)throw a.name==="SyntaxError"?y.from(a,y.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:C.classes.FormData,Blob:C.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};c.forEach(["delete","get","head","post","put","patch"],n=>{qt.headers[n]={}});var ce=qt;var ms=c.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Wn=n=>{let e={},o,t,r;return n&&n.split(` -`).forEach(function(i){r=i.indexOf(":"),o=i.substring(0,r).trim().toLowerCase(),t=i.substring(r+1).trim(),!(!o||e[o]&&ms[o])&&(o==="set-cookie"?e[o]?e[o].push(t):e[o]=[t]:e[o]=e[o]?e[o]+", "+t:t)}),e};var Xn=Symbol("internals");function Ne(n){return n&&String(n).trim().toLowerCase()}function st(n){return n===!1||n==null?n:c.isArray(n)?n.map(st):String(n)}function ps(n){let e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,t;for(;t=o.exec(n);)e[t[1]]=t[2];return e}var ls=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function Ht(n,e,o,t,r){if(c.isFunction(t))return t.call(this,e,o);if(r&&(e=o),!!c.isString(e)){if(c.isString(t))return e.indexOf(t)!==-1;if(c.isRegExp(t))return t.test(e)}}function fs(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,o,t)=>o.toUpperCase()+t)}function Ts(n,e){let o=c.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(n,t+o,{value:function(r,s,i){return this[t].call(this,e,r,s,i)},configurable:!0})})}var ue=class{constructor(e){e&&this.set(e)}set(e,o,t){let r=this;function s(a,p,u){let l=Ne(p);if(!l)throw new Error("header name must be a non-empty string");let T=c.findKey(r,l);(!T||r[T]===void 0||u===!0||u===void 0&&r[T]!==!1)&&(r[T||p]=st(a))}let i=(a,p)=>c.forEach(a,(u,l)=>s(u,l,p));if(c.isPlainObject(e)||e instanceof this.constructor)i(e,o);else if(c.isString(e)&&(e=e.trim())&&!ls(e))i(Wn(e),o);else if(c.isObject(e)&&c.isIterable(e)){let a={},p,u;for(let l of e){if(!c.isArray(l))throw TypeError("Object iterator must return a key-value pair");a[u=l[0]]=(p=a[u])?c.isArray(p)?[...p,l[1]]:[p,l[1]]:l[1]}i(a,o)}else e!=null&&s(o,e,t);return this}get(e,o){if(e=Ne(e),e){let t=c.findKey(this,e);if(t){let r=this[t];if(!o)return r;if(o===!0)return ps(r);if(c.isFunction(o))return o.call(this,r,t);if(c.isRegExp(o))return o.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,o){if(e=Ne(e),e){let t=c.findKey(this,e);return!!(t&&this[t]!==void 0&&(!o||Ht(this,this[t],t,o)))}return!1}delete(e,o){let t=this,r=!1;function s(i){if(i=Ne(i),i){let a=c.findKey(t,i);a&&(!o||Ht(t,t[a],a,o))&&(delete t[a],r=!0)}}return c.isArray(e)?e.forEach(s):s(e),r}clear(e){let o=Object.keys(this),t=o.length,r=!1;for(;t--;){let s=o[t];(!e||Ht(this,this[s],s,e,!0))&&(delete this[s],r=!0)}return r}normalize(e){let o=this,t={};return c.forEach(this,(r,s)=>{let i=c.findKey(t,s);if(i){o[i]=st(r),delete o[s];return}let a=e?fs(s):String(s).trim();a!==s&&delete o[s],o[a]=st(r),t[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let o=Object.create(null);return c.forEach(this,(t,r)=>{t!=null&&t!==!1&&(o[r]=e&&c.isArray(t)?t.join(", "):t)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,o])=>e+": "+o).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){let t=new this(e);return o.forEach(r=>t.set(r)),t}static accessor(e){let t=(this[Xn]=this[Xn]={accessors:{}}).accessors,r=this.prototype;function s(i){let a=Ne(i);t[a]||(Ts(r,i),t[a]=!0)}return c.isArray(e)?e.forEach(s):s(e),this}};ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);c.reduceDescriptors(ue.prototype,({value:n},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(t){this[o]=t}}});c.freezeMethods(ue);var M=ue;function Re(n,e){let o=this||ce,t=e||o,r=M.from(t.headers),s=t.data;return c.forEach(n,function(a){s=a.call(o,s,r.normalize(),e?e.status:void 0)}),r.normalize(),s}function xe(n){return!!(n&&n.__CANCEL__)}function Qn(n,e,o){y.call(this,n??"canceled",y.ERR_CANCELED,e,o),this.name="CanceledError"}c.inherits(Qn,y,{__CANCEL__:!0});var q=Qn;function Ie(n,e,o){let t=o.config.validateStatus;!o.status||!t||t(o.status)?n(o):e(new y("Request failed with status code "+o.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}function $t(n){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function gs(n,e){n=n||10;let o=new Array(n),t=new Array(n),r=0,s=0,i;return e=e!==void 0?e:1e3,function(p){let u=Date.now(),l=t[s];i||(i=u),o[r]=p,t[r]=u;let T=s,b=0;for(;T!==r;)b+=o[T++],T=T%n;if(r=(r+1)%n,r===s&&(s=(s+1)%n),u-i{o=l,r=null,s&&(clearTimeout(s),s=null),n.apply(null,u)};return[(...u)=>{let l=Date.now(),T=l-o;T>=t?i(u,l):(r=u,s||(s=setTimeout(()=>{s=null,i(r)},t-T)))},()=>r&&i(r)]}var eo=hs;var de=(n,e,o=3)=>{let t=0,r=Zn(50,250);return eo(s=>{let i=s.loaded,a=s.lengthComputable?s.total:void 0,p=i-t,u=r(p),l=i<=a;t=i;let T={loaded:i,total:a,progress:a?i/a:void 0,bytes:p,rate:u||void 0,estimated:u&&a&&l?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};n(T)},o)},zt=(n,e)=>{let o=n!=null;return[t=>e[0]({lengthComputable:o,total:n,loaded:t}),e[1]]},Yt=n=>(...e)=>c.asap(()=>n(...e));var to=C.hasStandardBrowserEnv?((n,e)=>o=>(o=new URL(o,C.origin),n.protocol===o.protocol&&n.host===o.host&&(e||n.port===o.port)))(new URL(C.origin),C.navigator&&/(msie|trident)/i.test(C.navigator.userAgent)):()=>!0;var no=C.hasStandardBrowserEnv?{write(n,e,o,t,r,s){let i=[n+"="+encodeURIComponent(e)];c.isNumber(o)&&i.push("expires="+new Date(o).toGMTString()),c.isString(t)&&i.push("path="+t),c.isString(r)&&i.push("domain="+r),s===!0&&i.push("secure"),document.cookie=i.join("; ")},read(n){let e=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(n){this.write(n,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Kt(n){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function Jt(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function Se(n,e,o){let t=!Kt(e);return n&&(t||o==!1)?Jt(n,e):e}var oo=n=>n instanceof M?{...n}:n;function F(n,e){e=e||{};let o={};function t(u,l,T,b){return c.isPlainObject(u)&&c.isPlainObject(l)?c.merge.call({caseless:b},u,l):c.isPlainObject(l)?c.merge({},l):c.isArray(l)?l.slice():l}function r(u,l,T,b){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u,T,b)}else return t(u,l,T,b)}function s(u,l){if(!c.isUndefined(l))return t(void 0,l)}function i(u,l){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u)}else return t(void 0,l)}function a(u,l,T){if(T in e)return t(u,l);if(T in n)return t(void 0,u)}let p={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,l,T)=>r(oo(u),oo(l),T,!0)};return c.forEach(Object.keys(Object.assign({},n,e)),function(l){let T=p[l]||r,b=T(n[l],e[l],l);c.isUndefined(b)&&T!==a||(o[l]=b)}),o}var it=n=>{let e=F({},n),{data:o,withXSRFToken:t,xsrfHeaderName:r,xsrfCookieName:s,headers:i,auth:a}=e;e.headers=i=M.from(i),e.url=ve(Se(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let p;if(c.isFormData(o)){if(C.hasStandardBrowserEnv||C.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((p=i.getContentType())!==!1){let[u,...l]=p?p.split(";").map(T=>T.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(C.hasStandardBrowserEnv&&(t&&c.isFunction(t)&&(t=t(e)),t||t!==!1&&to(e.url))){let u=r&&s&&no.read(s);u&&i.set(r,u)}return e};var Ps=typeof XMLHttpRequest<"u",ro=Ps&&function(n){return new Promise(function(o,t){let r=it(n),s=r.data,i=M.from(r.headers).normalize(),{responseType:a,onUploadProgress:p,onDownloadProgress:u}=r,l,T,b,I,g;function D(){I&&I(),g&&g(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let P=new XMLHttpRequest;P.open(r.method.toUpperCase(),r.url,!0),P.timeout=r.timeout;function A(){if(!P)return;let _=M.from("getAllResponseHeaders"in P&&P.getAllResponseHeaders()),U={data:!a||a==="text"||a==="json"?P.responseText:P.response,status:P.status,statusText:P.statusText,headers:_,config:n,request:P};Ie(function(J){o(J),D()},function(J){t(J),D()},U),P=null}"onloadend"in P?P.onloadend=A:P.onreadystatechange=function(){!P||P.readyState!==4||P.status===0&&!(P.responseURL&&P.responseURL.indexOf("file:")===0)||setTimeout(A)},P.onabort=function(){P&&(t(new y("Request aborted",y.ECONNABORTED,n,P)),P=null)},P.onerror=function(){t(new y("Network Error",y.ERR_NETWORK,n,P)),P=null},P.ontimeout=function(){let $=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded",U=r.transitional||ot;r.timeoutErrorMessage&&($=r.timeoutErrorMessage),t(new y($,U.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,n,P)),P=null},s===void 0&&i.setContentType(null),"setRequestHeader"in P&&c.forEach(i.toJSON(),function($,U){P.setRequestHeader(U,$)}),c.isUndefined(r.withCredentials)||(P.withCredentials=!!r.withCredentials),a&&a!=="json"&&(P.responseType=r.responseType),u&&([b,g]=de(u,!0),P.addEventListener("progress",b)),p&&P.upload&&([T,I]=de(p),P.upload.addEventListener("progress",T),P.upload.addEventListener("loadend",I)),(r.cancelToken||r.signal)&&(l=_=>{P&&(t(!_||_.type?new q(null,n,P):_),P.abort(),P=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));let O=$t(r.url);if(O&&C.protocols.indexOf(O)===-1){t(new y("Unsupported protocol "+O+":",y.ERR_BAD_REQUEST,n));return}P.send(s||null)})};var ys=(n,e)=>{let{length:o}=n=n?n.filter(Boolean):[];if(e||o){let t=new AbortController,r,s=function(u){if(!r){r=!0,a();let l=u instanceof Error?u:this.reason;t.abort(l instanceof y?l:new q(l instanceof Error?l.message:l))}},i=e&&setTimeout(()=>{i=null,s(new y(`timeout ${e} of ms exceeded`,y.ETIMEDOUT))},e),a=()=>{n&&(i&&clearTimeout(i),i=null,n.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),n=null)};n.forEach(u=>u.addEventListener("abort",s));let{signal:p}=t;return p.unsubscribe=()=>c.asap(a),p}},so=ys;var Es=function*(n,e){let o=n.byteLength;if(!e||o{let r=Ds(n,e),s=0,i,a=p=>{i||(i=!0,t&&t(p))};return new ReadableStream({async pull(p){try{let{done:u,value:l}=await r.next();if(u){a(),p.close();return}let T=l.byteLength;if(o){let b=s+=T;o(b)}p.enqueue(new Uint8Array(l))}catch(u){throw a(u),u}},cancel(p){return a(p),r.return()}},{highWaterMark:2})};var ct=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ao=ct&&typeof ReadableStream=="function",vs=ct&&(typeof TextEncoder=="function"?(n=>e=>n.encode(e))(new TextEncoder):async n=>new Uint8Array(await new Response(n).arrayBuffer())),co=(n,...e)=>{try{return!!n(...e)}catch{return!1}},Ns=ao&&co(()=>{let n=!1,e=new Request(C.origin,{body:new ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type");return n&&!e}),io=64*1024,Wt=ao&&co(()=>c.isReadableStream(new Response("").body)),at={stream:Wt&&(n=>n.body)};ct&&(n=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!at[e]&&(at[e]=c.isFunction(n[e])?o=>o[e]():(o,t)=>{throw new y(`Response type '${e}' is not supported`,y.ERR_NOT_SUPPORT,t)})})})(new Response);var Rs=async n=>{if(n==null)return 0;if(c.isBlob(n))return n.size;if(c.isSpecCompliantForm(n))return(await new Request(C.origin,{method:"POST",body:n}).arrayBuffer()).byteLength;if(c.isArrayBufferView(n)||c.isArrayBuffer(n))return n.byteLength;if(c.isURLSearchParams(n)&&(n=n+""),c.isString(n))return(await vs(n)).byteLength},xs=async(n,e)=>{let o=c.toFiniteNumber(n.getContentLength());return o??Rs(e)},uo=ct&&(async n=>{let{url:e,method:o,data:t,signal:r,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:p,responseType:u,headers:l,withCredentials:T="same-origin",fetchOptions:b}=it(n);u=u?(u+"").toLowerCase():"text";let I=so([r,s&&s.toAbortSignal()],i),g,D=I&&I.unsubscribe&&(()=>{I.unsubscribe()}),P;try{if(p&&Ns&&o!=="get"&&o!=="head"&&(P=await xs(l,t))!==0){let U=new Request(e,{method:"POST",body:t,duplex:"half"}),Y;if(c.isFormData(t)&&(Y=U.headers.get("content-type"))&&l.setContentType(Y),U.body){let[J,je]=zt(P,de(Yt(p)));t=Gt(U.body,io,J,je)}}c.isString(T)||(T=T?"include":"omit");let A="credentials"in Request.prototype;g=new Request(e,{...b,signal:I,method:o.toUpperCase(),headers:l.normalize().toJSON(),body:t,duplex:"half",credentials:A?T:void 0});let O=await fetch(g),_=Wt&&(u==="stream"||u==="response");if(Wt&&(a||_&&D)){let U={};["status","statusText","headers"].forEach(gn=>{U[gn]=O[gn]});let Y=c.toFiniteNumber(O.headers.get("content-length")),[J,je]=a&&zt(Y,de(Yt(a),!0))||[];O=new Response(Gt(O.body,io,J,()=>{je&&je(),D&&D()}),U)}u=u||"text";let $=await at[c.findKey(at,u)||"text"](O,n);return!_&&D&&D(),await new Promise((U,Y)=>{Ie(U,Y,{data:$,headers:M.from(O.headers),status:O.status,statusText:O.statusText,config:n,request:g})})}catch(A){throw D&&D(),A&&A.name==="TypeError"&&/Load failed|fetch/i.test(A.message)?Object.assign(new y("Network Error",y.ERR_NETWORK,n,g),{cause:A.cause||A}):y.from(A,A&&A.code,n,g)}});var Xt={http:tt,xhr:ro,fetch:uo};c.forEach(Xt,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});var mo=n=>`- ${n}`,Is=n=>c.isFunction(n)||n===null||n===!1,ut={getAdapter:n=>{n=c.isArray(n)?n:[n];let{length:e}=n,o,t,r={};for(let s=0;s`adapter ${a} `+(p===!1?"is not supported by the environment":"is not available in the build")),i=e?s.length>1?`since : +"use strict";var NetLicensing=(()=>{var At=Object.defineProperty;var Ko=Object.getOwnPropertyDescriptor;var Jo=Object.getOwnPropertyNames;var Go=Object.prototype.hasOwnProperty;var Pn=(n,e)=>{for(var o in e)At(n,o,{get:e[o],enumerable:!0})},Wo=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Jo(e))!Go.call(n,r)&&r!==o&&At(n,r,{get:()=>e[r],enumerable:!(t=Ko(e,r))||t.enumerable});return n};var Xo=n=>Wo(At({},"__esModule",{value:!0}),n);var zs={};Pn(zs,{ApiKeyRole:()=>hn,Bundle:()=>Ve,BundleService:()=>Mo,Constants:()=>P,Context:()=>zo,Country:()=>He,License:()=>re,LicenseService:()=>Uo,LicenseTemplate:()=>Ye,LicenseTemplateService:()=>jo,LicenseTransactionJoin:()=>Pt,LicenseType:()=>ge,Licensee:()=>ze,LicenseeSecretMode:()=>Be,LicenseeService:()=>_o,LicensingModel:()=>yn,NlicError:()=>k,NodeSecretMode:()=>En,Notification:()=>Ke,NotificationEvent:()=>Te,NotificationProtocol:()=>Pe,NotificationService:()=>ko,Page:()=>x,PaymentMethod:()=>Je,PaymentMethodEnum:()=>Dn,PaymentMethodService:()=>Bo,Product:()=>Ge,ProductDiscount:()=>ft,ProductModule:()=>gt,ProductModuleService:()=>Fo,ProductService:()=>qo,SecurityMode:()=>q,Service:()=>f,TimeVolumePeriod:()=>Fe,Token:()=>Tt,TokenService:()=>Vo,TokenType:()=>he,Transaction:()=>Ae,TransactionService:()=>Ho,TransactionSource:()=>qe,TransactionStatus:()=>ye,UtilityService:()=>$o,ValidationParameters:()=>Yo,ValidationResults:()=>Dt,defineEntity:()=>v,ensureNotEmpty:()=>E,ensureNotNull:()=>N,filterDecode:()=>wo,filterEncode:()=>S,isDefined:()=>cn,isValid:()=>we,itemToBundle:()=>G,itemToCountry:()=>$e,itemToLicense:()=>z,itemToLicenseTemplate:()=>X,itemToLicensee:()=>W,itemToNotification:()=>Q,itemToObject:()=>R,itemToPaymentMethod:()=>se,itemToProduct:()=>ee,itemToProductModule:()=>te,itemToToken:()=>pe,itemToTransaction:()=>ne,serialize:()=>C});var Qo=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Be=Qo;var Zo=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),ge=Zo;var er=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Te=er;var tr=Object.freeze({WEBHOOK:"WEBHOOK"}),Pe=tr;var nr=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),q=nr;var or=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),Fe=or;var rr=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),he=rr;var sr=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),qe=sr;var ir=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),ye=ir;var P={LicenseeSecretMode:Be,LicenseType:ge,NotificationEvent:Te,NotificationProtocol:Pe,SecurityMode:q,TimeVolumePeriod:Fe,TokenType:he,TransactionSource:qe,TransactionStatus:ye,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:ge},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:he},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:Pe,Event:Te},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:ye},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ar=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),hn=ar;var cr=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),yn=cr;var ur=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),En=ur;var dr=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),Dn=dr;var mr=n=>{try{return JSON.parse(n)}catch{return n}},pr=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=mr(t)}),e},lr=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(bn(o))}),e},bn=n=>n?{...pr(n.property),...lr(n.list)}:{},R=bn;var wt=(n,e)=>Object.hasOwn(n,e),p=(n,e,o)=>{n[e]=o},m=(n,e,o)=>wt(n,e)?n[e]:o;var C=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([r,s])=>{if(!t.includes(r)&&typeof s!="function")if(s===void 0)o[r]="";else if(typeof s=="string")o[r]=s;else if(s instanceof Date)o[r]=s.toISOString();else if(typeof s!="object"||s===null)o[r]=String(s);else try{o[r]=JSON.stringify(s)}catch{o[r]=String(s)}}),o};var fr=function(n,e,o={},t){let r={set:[],get:[]};t?.get&&r.get.push(t.get),t?.set&&r.set.push(t.set);let s={set(i,a){p(n,i,a)},get(i,a){return m(n,i,a)},has(i){return wt(n,i)},setProperty(i,a){this.set(i,a)},addProperty(i,a){this.set(i,a)},getProperty(i,a){return this.get(i,a)},hasProperty(i){return this.has(i)},setProperties(i){Object.entries(i).forEach(([a,d])=>{this.set(a,d)})},serialize(){return C(n)}};return new Proxy(n,{get(i,a,d){return Object.hasOwn(e,a)?e[a]:Object.hasOwn(s,a)?s[a]:(r.get.forEach(u=>{u(i,a,d)}),Reflect.get(i,a,d))},set(i,a,d,u){return r.set.forEach(l=>{l(i,a,d,u)}),Reflect.set(i,a,d,u)},getPrototypeOf(){return o.prototype||null}})},v=fr;var Nn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setLicenseTemplateNumbers(t){p(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return m(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:r=[]}=e;r.splice(r.indexOf(t),1),e.licenseTemplateNumbers=r},getStaleLicenseTemplateNumbers(t){return m(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),C({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},Nn)},Ve=Nn;var G=n=>{let e=R(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Ve(e)};var Rn=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return v(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Rn)},He=Rn;var $e=n=>He(R(n));var vn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setHidden(t){p(e,"hidden",t)},getHidden(t){return m(e,"hidden",t)},setLicenseeNumber(t){p(e,"licenseeNumber",t)},getLicenseeNumber(t){return m(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){p(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return m(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){p(e,"productModuleNumber",t)},getProductModuleNumber(t){return m(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},vn)},re=vn;var z=n=>{let e=R(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),re(e)};var xn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setMarkedForTransfer(t){p(e,"markedForTransfer",t)},getMarkedForTransfer(t){return m(e,"markedForTransfer",t)},serialize(){return C(e,{ignore:["inUse"]})}},xn)},ze=xn;var W=n=>ze(R(n));var In=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setLicenseType(t){p(e,"licenseType",t)},getLicenseType(t){return m(e,"licenseType",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setAutomatic(t){p(e,"automatic",t)},getAutomatic(t){return m(e,"automatic",t)},setHidden(t){p(e,"hidden",t)},getHidden(t){return m(e,"hidden",t)},setHideLicenses(t){p(e,"hideLicenses",t)},getHideLicenses(t){return m(e,"hideLicenses",t)},setProductModuleNumber(t){p(e,"productModuleNumber",t)},getProductModuleNumber(t){return m(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},In)},Ye=In;var X=n=>Ye(R(n));var Sn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setProtocol(t){p(e,"protocol",t)},getProtocol(t){return m(e,"protocol",t)},setEvents(t){p(e,"events",t)},getEvents(t){return m(e,"events",t)},addEvent(t){let r=this.getEvents([]);r.push(t),this.setEvents(r)},setPayload(t){p(e,"payload",t)},getPayload(t){return m(e,"payload",t)},setEndpoint(t){p(e,"endpoint",t)},getEndpoint(t){return m(e,"endpoint",t)},serialize(){let t=C(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},Sn)},Ke=Sn;var Q=n=>{let e=R(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),Ke(e)};var Ln=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)}},Ln)},Je=Ln;var se=n=>Je(R(n));var Cn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setVersion(t){p(e,"version",t)},getVersion(t){return m(e,"version",t)},setDescription(t){p(e,"description",t)},getDescription(t){return m(e,"description",t)},setLicensingInfo(t){p(e,"licensingInfo",t)},getLicensingInfo(t){return m(e,"licensingInfo",t)},setLicenseeAutoCreate(t){p(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return m(e,"licenseeAutoCreate",t)},setDiscounts(t){p(e,"discounts",t)},getDiscounts(t){return m(e,"discounts",t)},addDiscount(t){let r=this.getDiscounts([]);r.push(t),this.setDiscounts(r)},removeDiscount(t){let r=this.getDiscounts();Array.isArray(r)&&r.length>0&&(r.splice(r.indexOf(t),1),this.setDiscounts(r))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=C(e,{ignore:["discounts","inUse"]}),r=this.getDiscounts();return r&&(t.discount=r.length>0?r.map(s=>s.toString()):""),t}},Cn)},Ge=Cn;function Ee(n,e){return function(){return n.apply(e,arguments)}}var{toString:gr}=Object.prototype,{getPrototypeOf:Mt}=Object,{iterator:Xe,toStringTag:wn}=Symbol,Qe=(n=>e=>{let o=gr.call(e);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),B=n=>(n=n.toLowerCase(),e=>Qe(e)===n),Ze=n=>e=>typeof e===n,{isArray:ie}=Array,De=Ze("undefined");function Tr(n){return n!==null&&!De(n)&&n.constructor!==null&&!De(n.constructor)&&j(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}var On=B("ArrayBuffer");function Pr(n){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(n):e=n&&n.buffer&&On(n.buffer),e}var hr=Ze("string"),j=Ze("function"),Mn=Ze("number"),et=n=>n!==null&&typeof n=="object",yr=n=>n===!0||n===!1,We=n=>{if(Qe(n)!=="object")return!1;let e=Mt(n);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(wn in n)&&!(Xe in n)},Er=B("Date"),Dr=B("File"),br=B("Blob"),Nr=B("FileList"),Rr=n=>et(n)&&j(n.pipe),vr=n=>{let e;return n&&(typeof FormData=="function"&&n instanceof FormData||j(n.append)&&((e=Qe(n))==="formdata"||e==="object"&&j(n.toString)&&n.toString()==="[object FormData]"))},xr=B("URLSearchParams"),[Ir,Sr,Lr,Cr]=["ReadableStream","Request","Response","Headers"].map(B),Ar=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function be(n,e,{allOwnKeys:o=!1}={}){if(n===null||typeof n>"u")return;let t,r;if(typeof n!="object"&&(n=[n]),ie(n))for(t=0,r=n.length;t0;)if(r=o[t],e===r.toLowerCase())return r;return null}var Z=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Un=n=>!De(n)&&n!==Z;function Ot(){let{caseless:n}=Un(this)&&this||{},e={},o=(t,r)=>{let s=n&&_n(e,r)||r;We(e[s])&&We(t)?e[s]=Ot(e[s],t):We(t)?e[s]=Ot({},t):ie(t)?e[s]=t.slice():e[s]=t};for(let t=0,r=arguments.length;t(be(e,(r,s)=>{o&&j(r)?n[s]=Ee(r,o):n[s]=r},{allOwnKeys:t}),n),Or=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),Mr=(n,e,o,t)=>{n.prototype=Object.create(e.prototype,t),n.prototype.constructor=n,Object.defineProperty(n,"super",{value:e.prototype}),o&&Object.assign(n.prototype,o)},_r=(n,e,o,t)=>{let r,s,i,a={};if(e=e||{},n==null)return e;do{for(r=Object.getOwnPropertyNames(n),s=r.length;s-- >0;)i=r[s],(!t||t(i,n,e))&&!a[i]&&(e[i]=n[i],a[i]=!0);n=o!==!1&&Mt(n)}while(n&&(!o||o(n,e))&&n!==Object.prototype);return e},Ur=(n,e,o)=>{n=String(n),(o===void 0||o>n.length)&&(o=n.length),o-=e.length;let t=n.indexOf(e,o);return t!==-1&&t===o},jr=n=>{if(!n)return null;if(ie(n))return n;let e=n.length;if(!Mn(e))return null;let o=new Array(e);for(;e-- >0;)o[e]=n[e];return o},kr=(n=>e=>n&&e instanceof n)(typeof Uint8Array<"u"&&Mt(Uint8Array)),Br=(n,e)=>{let t=(n&&n[Xe]).call(n),r;for(;(r=t.next())&&!r.done;){let s=r.value;e.call(n,s[0],s[1])}},Fr=(n,e)=>{let o,t=[];for(;(o=n.exec(e))!==null;)t.push(o);return t},qr=B("HTMLFormElement"),Vr=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,t,r){return t.toUpperCase()+r}),An=(({hasOwnProperty:n})=>(e,o)=>n.call(e,o))(Object.prototype),Hr=B("RegExp"),jn=(n,e)=>{let o=Object.getOwnPropertyDescriptors(n),t={};be(o,(r,s)=>{let i;(i=e(r,s,n))!==!1&&(t[s]=i||r)}),Object.defineProperties(n,t)},$r=n=>{jn(n,(e,o)=>{if(j(n)&&["arguments","caller","callee"].indexOf(o)!==-1)return!1;let t=n[o];if(j(t)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},zr=(n,e)=>{let o={},t=r=>{r.forEach(s=>{o[s]=!0})};return ie(n)?t(n):t(String(n).split(e)),o},Yr=()=>{},Kr=(n,e)=>n!=null&&Number.isFinite(n=+n)?n:e;function Jr(n){return!!(n&&j(n.append)&&n[wn]==="FormData"&&n[Xe])}var Gr=n=>{let e=new Array(10),o=(t,r)=>{if(et(t)){if(e.indexOf(t)>=0)return;if(!("toJSON"in t)){e[r]=t;let s=ie(t)?[]:{};return be(t,(i,a)=>{let d=o(i,r+1);!De(d)&&(s[a]=d)}),e[r]=void 0,s}}return t};return o(n,0)},Wr=B("AsyncFunction"),Xr=n=>n&&(et(n)||j(n))&&j(n.then)&&j(n.catch),kn=((n,e)=>n?setImmediate:e?((o,t)=>(Z.addEventListener("message",({source:r,data:s})=>{r===Z&&s===o&&t.length&&t.shift()()},!1),r=>{t.push(r),Z.postMessage(o,"*")}))(`axios@${Math.random()}`,[]):o=>setTimeout(o))(typeof setImmediate=="function",j(Z.postMessage)),Qr=typeof queueMicrotask<"u"?queueMicrotask.bind(Z):typeof process<"u"&&process.nextTick||kn,Zr=n=>n!=null&&j(n[Xe]),c={isArray:ie,isArrayBuffer:On,isBuffer:Tr,isFormData:vr,isArrayBufferView:Pr,isString:hr,isNumber:Mn,isBoolean:yr,isObject:et,isPlainObject:We,isReadableStream:Ir,isRequest:Sr,isResponse:Lr,isHeaders:Cr,isUndefined:De,isDate:Er,isFile:Dr,isBlob:br,isRegExp:Hr,isFunction:j,isStream:Rr,isURLSearchParams:xr,isTypedArray:kr,isFileList:Nr,forEach:be,merge:Ot,extend:wr,trim:Ar,stripBOM:Or,inherits:Mr,toFlatObject:_r,kindOf:Qe,kindOfTest:B,endsWith:Ur,toArray:jr,forEachEntry:Br,matchAll:Fr,isHTMLForm:qr,hasOwnProperty:An,hasOwnProp:An,reduceDescriptors:jn,freezeMethods:$r,toObjectSet:zr,toCamelCase:Vr,noop:Yr,toFiniteNumber:Kr,findKey:_n,global:Z,isContextDefined:Un,isSpecCompliantForm:Jr,toJSONObject:Gr,isAsyncFn:Wr,isThenable:Xr,setImmediate:kn,asap:Qr,isIterable:Zr};function ae(n,e,o,t,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=n,this.name="AxiosError",e&&(this.code=e),o&&(this.config=o),t&&(this.request=t),r&&(this.response=r,this.status=r.status?r.status:null)}c.inherits(ae,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:c.toJSONObject(this.config),code:this.code,status:this.status}}});var Bn=ae.prototype,Fn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(n=>{Fn[n]={value:n}});Object.defineProperties(ae,Fn);Object.defineProperty(Bn,"isAxiosError",{value:!0});ae.from=(n,e,o,t,r,s)=>{let i=Object.create(Bn);return c.toFlatObject(n,i,function(d){return d!==Error.prototype},a=>a!=="isAxiosError"),ae.call(i,n.message,e,o,t,r),i.cause=n,i.name=n.name,s&&Object.assign(i,s),i};var y=ae;var tt=null;function _t(n){return c.isPlainObject(n)||c.isArray(n)}function Vn(n){return c.endsWith(n,"[]")?n.slice(0,-2):n}function qn(n,e,o){return n?n.concat(e).map(function(r,s){return r=Vn(r),!o&&s?"["+r+"]":r}).join(o?".":""):e}function es(n){return c.isArray(n)&&!n.some(_t)}var ts=c.toFlatObject(c,{},null,function(e){return/^is[A-Z]/.test(e)});function ns(n,e,o){if(!c.isObject(n))throw new TypeError("target must be an object");e=e||new(tt||FormData),o=c.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(D,h){return!c.isUndefined(h[D])});let t=o.metaTokens,r=o.visitor||l,s=o.dots,i=o.indexes,d=(o.Blob||typeof Blob<"u"&&Blob)&&c.isSpecCompliantForm(e);if(!c.isFunction(r))throw new TypeError("visitor must be a function");function u(T){if(T===null)return"";if(c.isDate(T))return T.toISOString();if(!d&&c.isBlob(T))throw new y("Blob is not supported. Use a Buffer instead.");return c.isArrayBuffer(T)||c.isTypedArray(T)?d&&typeof Blob=="function"?new Blob([T]):Buffer.from(T):T}function l(T,D,h){let A=T;if(T&&!h&&typeof T=="object"){if(c.endsWith(D,"{}"))D=t?D:D.slice(0,-2),T=JSON.stringify(T);else if(c.isArray(T)&&es(T)||(c.isFileList(T)||c.endsWith(D,"[]"))&&(A=c.toArray(T)))return D=Vn(D),A.forEach(function(_,$){!(c.isUndefined(_)||_===null)&&e.append(i===!0?qn([D],$,s):i===null?D:D+"[]",u(_))}),!1}return _t(T)?!0:(e.append(qn(h,D,s),u(T)),!1)}let g=[],b=Object.assign(ts,{defaultVisitor:l,convertValue:u,isVisitable:_t});function I(T,D){if(!c.isUndefined(T)){if(g.indexOf(T)!==-1)throw Error("Circular reference detected in "+D.join("."));g.push(T),c.forEach(T,function(A,O){(!(c.isUndefined(A)||A===null)&&r.call(e,A,c.isString(O)?O.trim():O,D,b))===!0&&I(A,D?D.concat(O):[O])}),g.pop()}}if(!c.isObject(n))throw new TypeError("data must be an object");return I(n),e}var K=ns;function Hn(n){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(n).replace(/[!'()~]|%20|%00/g,function(t){return e[t]})}function $n(n,e){this._pairs=[],n&&K(n,this,e)}var zn=$n.prototype;zn.append=function(e,o){this._pairs.push([e,o])};zn.toString=function(e){let o=e?function(t){return e.call(this,t,Hn)}:Hn;return this._pairs.map(function(r){return o(r[0])+"="+o(r[1])},"").join("&")};var nt=$n;function os(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ne(n,e,o){if(!e)return n;let t=o&&o.encode||os;c.isFunction(o)&&(o={serialize:o});let r=o&&o.serialize,s;if(r?s=r(e,o):s=c.isURLSearchParams(e)?e.toString():new nt(e,o).toString(t),s){let i=n.indexOf("#");i!==-1&&(n=n.slice(0,i)),n+=(n.indexOf("?")===-1?"?":"&")+s}return n}var Ut=class{constructor(){this.handlers=[]}use(e,o,t){return this.handlers.push({fulfilled:e,rejected:o,synchronous:t?t.synchronous:!1,runWhen:t?t.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){c.forEach(this.handlers,function(t){t!==null&&e(t)})}},jt=Ut;var ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};var Yn=typeof URLSearchParams<"u"?URLSearchParams:nt;var Kn=typeof FormData<"u"?FormData:null;var Jn=typeof Blob<"u"?Blob:null;var Gn={isBrowser:!0,classes:{URLSearchParams:Yn,FormData:Kn,Blob:Jn},protocols:["http","https","file","blob","url","data"]};var Ft={};Pn(Ft,{hasBrowserEnv:()=>Bt,hasStandardBrowserEnv:()=>rs,hasStandardBrowserWebWorkerEnv:()=>ss,navigator:()=>kt,origin:()=>is});var Bt=typeof window<"u"&&typeof document<"u",kt=typeof navigator=="object"&&navigator||void 0,rs=Bt&&(!kt||["ReactNative","NativeScript","NS"].indexOf(kt.product)<0),ss=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",is=Bt&&window.location.href||"http://localhost";var L={...Ft,...Gn};function qt(n,e){return K(n,new L.classes.URLSearchParams,Object.assign({visitor:function(o,t,r,s){return L.isNode&&c.isBuffer(o)?(this.append(t,o.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},e))}function as(n){return c.matchAll(/\w+|\[(\w*)]/g,n).map(e=>e[0]==="[]"?"":e[1]||e[0])}function cs(n){let e={},o=Object.keys(n),t,r=o.length,s;for(t=0;t=o.length;return i=!i&&c.isArray(r)?r.length:i,d?(c.hasOwnProp(r,i)?r[i]=[r[i],t]:r[i]=t,!a):((!r[i]||!c.isObject(r[i]))&&(r[i]=[]),e(o,t,r[i],s)&&c.isArray(r[i])&&(r[i]=cs(r[i])),!a)}if(c.isFormData(n)&&c.isFunction(n.entries)){let o={};return c.forEachEntry(n,(t,r)=>{e(as(t),r,o,0)}),o}return null}var rt=us;function ds(n,e,o){if(c.isString(n))try{return(e||JSON.parse)(n),c.trim(n)}catch(t){if(t.name!=="SyntaxError")throw t}return(o||JSON.stringify)(n)}var Vt={transitional:ot,adapter:["xhr","http","fetch"],transformRequest:[function(e,o){let t=o.getContentType()||"",r=t.indexOf("application/json")>-1,s=c.isObject(e);if(s&&c.isHTMLForm(e)&&(e=new FormData(e)),c.isFormData(e))return r?JSON.stringify(rt(e)):e;if(c.isArrayBuffer(e)||c.isBuffer(e)||c.isStream(e)||c.isFile(e)||c.isBlob(e)||c.isReadableStream(e))return e;if(c.isArrayBufferView(e))return e.buffer;if(c.isURLSearchParams(e))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(s){if(t.indexOf("application/x-www-form-urlencoded")>-1)return qt(e,this.formSerializer).toString();if((a=c.isFileList(e))||t.indexOf("multipart/form-data")>-1){let d=this.env&&this.env.FormData;return K(a?{"files[]":e}:e,d&&new d,this.formSerializer)}}return s||r?(o.setContentType("application/json",!1),ds(e)):e}],transformResponse:[function(e){let o=this.transitional||Vt.transitional,t=o&&o.forcedJSONParsing,r=this.responseType==="json";if(c.isResponse(e)||c.isReadableStream(e))return e;if(e&&c.isString(e)&&(t&&!this.responseType||r)){let i=!(o&&o.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(a){if(i)throw a.name==="SyntaxError"?y.from(a,y.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:L.classes.FormData,Blob:L.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};c.forEach(["delete","get","head","post","put","patch"],n=>{Vt.headers[n]={}});var ce=Vt;var ms=c.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Wn=n=>{let e={},o,t,r;return n&&n.split(` +`).forEach(function(i){r=i.indexOf(":"),o=i.substring(0,r).trim().toLowerCase(),t=i.substring(r+1).trim(),!(!o||e[o]&&ms[o])&&(o==="set-cookie"?e[o]?e[o].push(t):e[o]=[t]:e[o]=e[o]?e[o]+", "+t:t)}),e};var Xn=Symbol("internals");function Re(n){return n&&String(n).trim().toLowerCase()}function st(n){return n===!1||n==null?n:c.isArray(n)?n.map(st):String(n)}function ps(n){let e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,t;for(;t=o.exec(n);)e[t[1]]=t[2];return e}var ls=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function Ht(n,e,o,t,r){if(c.isFunction(t))return t.call(this,e,o);if(r&&(e=o),!!c.isString(e)){if(c.isString(t))return e.indexOf(t)!==-1;if(c.isRegExp(t))return t.test(e)}}function fs(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,o,t)=>o.toUpperCase()+t)}function gs(n,e){let o=c.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(n,t+o,{value:function(r,s,i){return this[t].call(this,e,r,s,i)},configurable:!0})})}var ue=class{constructor(e){e&&this.set(e)}set(e,o,t){let r=this;function s(a,d,u){let l=Re(d);if(!l)throw new Error("header name must be a non-empty string");let g=c.findKey(r,l);(!g||r[g]===void 0||u===!0||u===void 0&&r[g]!==!1)&&(r[g||d]=st(a))}let i=(a,d)=>c.forEach(a,(u,l)=>s(u,l,d));if(c.isPlainObject(e)||e instanceof this.constructor)i(e,o);else if(c.isString(e)&&(e=e.trim())&&!ls(e))i(Wn(e),o);else if(c.isObject(e)&&c.isIterable(e)){let a={},d,u;for(let l of e){if(!c.isArray(l))throw TypeError("Object iterator must return a key-value pair");a[u=l[0]]=(d=a[u])?c.isArray(d)?[...d,l[1]]:[d,l[1]]:l[1]}i(a,o)}else e!=null&&s(o,e,t);return this}get(e,o){if(e=Re(e),e){let t=c.findKey(this,e);if(t){let r=this[t];if(!o)return r;if(o===!0)return ps(r);if(c.isFunction(o))return o.call(this,r,t);if(c.isRegExp(o))return o.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,o){if(e=Re(e),e){let t=c.findKey(this,e);return!!(t&&this[t]!==void 0&&(!o||Ht(this,this[t],t,o)))}return!1}delete(e,o){let t=this,r=!1;function s(i){if(i=Re(i),i){let a=c.findKey(t,i);a&&(!o||Ht(t,t[a],a,o))&&(delete t[a],r=!0)}}return c.isArray(e)?e.forEach(s):s(e),r}clear(e){let o=Object.keys(this),t=o.length,r=!1;for(;t--;){let s=o[t];(!e||Ht(this,this[s],s,e,!0))&&(delete this[s],r=!0)}return r}normalize(e){let o=this,t={};return c.forEach(this,(r,s)=>{let i=c.findKey(t,s);if(i){o[i]=st(r),delete o[s];return}let a=e?fs(s):String(s).trim();a!==s&&delete o[s],o[a]=st(r),t[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let o=Object.create(null);return c.forEach(this,(t,r)=>{t!=null&&t!==!1&&(o[r]=e&&c.isArray(t)?t.join(", "):t)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,o])=>e+": "+o).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){let t=new this(e);return o.forEach(r=>t.set(r)),t}static accessor(e){let t=(this[Xn]=this[Xn]={accessors:{}}).accessors,r=this.prototype;function s(i){let a=Re(i);t[a]||(gs(r,i),t[a]=!0)}return c.isArray(e)?e.forEach(s):s(e),this}};ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);c.reduceDescriptors(ue.prototype,({value:n},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(t){this[o]=t}}});c.freezeMethods(ue);var M=ue;function ve(n,e){let o=this||ce,t=e||o,r=M.from(t.headers),s=t.data;return c.forEach(n,function(a){s=a.call(o,s,r.normalize(),e?e.status:void 0)}),r.normalize(),s}function xe(n){return!!(n&&n.__CANCEL__)}function Qn(n,e,o){y.call(this,n??"canceled",y.ERR_CANCELED,e,o),this.name="CanceledError"}c.inherits(Qn,y,{__CANCEL__:!0});var V=Qn;function Ie(n,e,o){let t=o.config.validateStatus;!o.status||!t||t(o.status)?n(o):e(new y("Request failed with status code "+o.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}function $t(n){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function Ts(n,e){n=n||10;let o=new Array(n),t=new Array(n),r=0,s=0,i;return e=e!==void 0?e:1e3,function(d){let u=Date.now(),l=t[s];i||(i=u),o[r]=d,t[r]=u;let g=s,b=0;for(;g!==r;)b+=o[g++],g=g%n;if(r=(r+1)%n,r===s&&(s=(s+1)%n),u-i{o=l,r=null,s&&(clearTimeout(s),s=null),n.apply(null,u)};return[(...u)=>{let l=Date.now(),g=l-o;g>=t?i(u,l):(r=u,s||(s=setTimeout(()=>{s=null,i(r)},t-g)))},()=>r&&i(r)]}var eo=Ps;var de=(n,e,o=3)=>{let t=0,r=Zn(50,250);return eo(s=>{let i=s.loaded,a=s.lengthComputable?s.total:void 0,d=i-t,u=r(d),l=i<=a;t=i;let g={loaded:i,total:a,progress:a?i/a:void 0,bytes:d,rate:u||void 0,estimated:u&&a&&l?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};n(g)},o)},zt=(n,e)=>{let o=n!=null;return[t=>e[0]({lengthComputable:o,total:n,loaded:t}),e[1]]},Yt=n=>(...e)=>c.asap(()=>n(...e));var to=L.hasStandardBrowserEnv?((n,e)=>o=>(o=new URL(o,L.origin),n.protocol===o.protocol&&n.host===o.host&&(e||n.port===o.port)))(new URL(L.origin),L.navigator&&/(msie|trident)/i.test(L.navigator.userAgent)):()=>!0;var no=L.hasStandardBrowserEnv?{write(n,e,o,t,r,s){let i=[n+"="+encodeURIComponent(e)];c.isNumber(o)&&i.push("expires="+new Date(o).toGMTString()),c.isString(t)&&i.push("path="+t),c.isString(r)&&i.push("domain="+r),s===!0&&i.push("secure"),document.cookie=i.join("; ")},read(n){let e=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(n){this.write(n,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Kt(n){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function Jt(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function Se(n,e,o){let t=!Kt(e);return n&&(t||o==!1)?Jt(n,e):e}var oo=n=>n instanceof M?{...n}:n;function F(n,e){e=e||{};let o={};function t(u,l,g,b){return c.isPlainObject(u)&&c.isPlainObject(l)?c.merge.call({caseless:b},u,l):c.isPlainObject(l)?c.merge({},l):c.isArray(l)?l.slice():l}function r(u,l,g,b){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u,g,b)}else return t(u,l,g,b)}function s(u,l){if(!c.isUndefined(l))return t(void 0,l)}function i(u,l){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u)}else return t(void 0,l)}function a(u,l,g){if(g in e)return t(u,l);if(g in n)return t(void 0,u)}let d={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,l,g)=>r(oo(u),oo(l),g,!0)};return c.forEach(Object.keys(Object.assign({},n,e)),function(l){let g=d[l]||r,b=g(n[l],e[l],l);c.isUndefined(b)&&g!==a||(o[l]=b)}),o}var it=n=>{let e=F({},n),{data:o,withXSRFToken:t,xsrfHeaderName:r,xsrfCookieName:s,headers:i,auth:a}=e;e.headers=i=M.from(i),e.url=Ne(Se(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let d;if(c.isFormData(o)){if(L.hasStandardBrowserEnv||L.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((d=i.getContentType())!==!1){let[u,...l]=d?d.split(";").map(g=>g.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(L.hasStandardBrowserEnv&&(t&&c.isFunction(t)&&(t=t(e)),t||t!==!1&&to(e.url))){let u=r&&s&&no.read(s);u&&i.set(r,u)}return e};var hs=typeof XMLHttpRequest<"u",ro=hs&&function(n){return new Promise(function(o,t){let r=it(n),s=r.data,i=M.from(r.headers).normalize(),{responseType:a,onUploadProgress:d,onDownloadProgress:u}=r,l,g,b,I,T;function D(){I&&I(),T&&T(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout;function A(){if(!h)return;let _=M.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),U={data:!a||a==="text"||a==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:_,config:n,request:h};Ie(function(J){o(J),D()},function(J){t(J),D()},U),h=null}"onloadend"in h?h.onloadend=A:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(A)},h.onabort=function(){h&&(t(new y("Request aborted",y.ECONNABORTED,n,h)),h=null)},h.onerror=function(){t(new y("Network Error",y.ERR_NETWORK,n,h)),h=null},h.ontimeout=function(){let $=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded",U=r.transitional||ot;r.timeoutErrorMessage&&($=r.timeoutErrorMessage),t(new y($,U.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,n,h)),h=null},s===void 0&&i.setContentType(null),"setRequestHeader"in h&&c.forEach(i.toJSON(),function($,U){h.setRequestHeader(U,$)}),c.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),a&&a!=="json"&&(h.responseType=r.responseType),u&&([b,T]=de(u,!0),h.addEventListener("progress",b)),d&&h.upload&&([g,I]=de(d),h.upload.addEventListener("progress",g),h.upload.addEventListener("loadend",I)),(r.cancelToken||r.signal)&&(l=_=>{h&&(t(!_||_.type?new V(null,n,h):_),h.abort(),h=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));let O=$t(r.url);if(O&&L.protocols.indexOf(O)===-1){t(new y("Unsupported protocol "+O+":",y.ERR_BAD_REQUEST,n));return}h.send(s||null)})};var ys=(n,e)=>{let{length:o}=n=n?n.filter(Boolean):[];if(e||o){let t=new AbortController,r,s=function(u){if(!r){r=!0,a();let l=u instanceof Error?u:this.reason;t.abort(l instanceof y?l:new V(l instanceof Error?l.message:l))}},i=e&&setTimeout(()=>{i=null,s(new y(`timeout ${e} of ms exceeded`,y.ETIMEDOUT))},e),a=()=>{n&&(i&&clearTimeout(i),i=null,n.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),n=null)};n.forEach(u=>u.addEventListener("abort",s));let{signal:d}=t;return d.unsubscribe=()=>c.asap(a),d}},so=ys;var Es=function*(n,e){let o=n.byteLength;if(!e||o{let r=Ds(n,e),s=0,i,a=d=>{i||(i=!0,t&&t(d))};return new ReadableStream({async pull(d){try{let{done:u,value:l}=await r.next();if(u){a(),d.close();return}let g=l.byteLength;if(o){let b=s+=g;o(b)}d.enqueue(new Uint8Array(l))}catch(u){throw a(u),u}},cancel(d){return a(d),r.return()}},{highWaterMark:2})};var ct=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ao=ct&&typeof ReadableStream=="function",Ns=ct&&(typeof TextEncoder=="function"?(n=>e=>n.encode(e))(new TextEncoder):async n=>new Uint8Array(await new Response(n).arrayBuffer())),co=(n,...e)=>{try{return!!n(...e)}catch{return!1}},Rs=ao&&co(()=>{let n=!1,e=new Request(L.origin,{body:new ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type");return n&&!e}),io=64*1024,Wt=ao&&co(()=>c.isReadableStream(new Response("").body)),at={stream:Wt&&(n=>n.body)};ct&&(n=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!at[e]&&(at[e]=c.isFunction(n[e])?o=>o[e]():(o,t)=>{throw new y(`Response type '${e}' is not supported`,y.ERR_NOT_SUPPORT,t)})})})(new Response);var vs=async n=>{if(n==null)return 0;if(c.isBlob(n))return n.size;if(c.isSpecCompliantForm(n))return(await new Request(L.origin,{method:"POST",body:n}).arrayBuffer()).byteLength;if(c.isArrayBufferView(n)||c.isArrayBuffer(n))return n.byteLength;if(c.isURLSearchParams(n)&&(n=n+""),c.isString(n))return(await Ns(n)).byteLength},xs=async(n,e)=>{let o=c.toFiniteNumber(n.getContentLength());return o??vs(e)},uo=ct&&(async n=>{let{url:e,method:o,data:t,signal:r,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:d,responseType:u,headers:l,withCredentials:g="same-origin",fetchOptions:b}=it(n);u=u?(u+"").toLowerCase():"text";let I=so([r,s&&s.toAbortSignal()],i),T,D=I&&I.unsubscribe&&(()=>{I.unsubscribe()}),h;try{if(d&&Rs&&o!=="get"&&o!=="head"&&(h=await xs(l,t))!==0){let U=new Request(e,{method:"POST",body:t,duplex:"half"}),Y;if(c.isFormData(t)&&(Y=U.headers.get("content-type"))&&l.setContentType(Y),U.body){let[J,ke]=zt(h,de(Yt(d)));t=Gt(U.body,io,J,ke)}}c.isString(g)||(g=g?"include":"omit");let A="credentials"in Request.prototype;T=new Request(e,{...b,signal:I,method:o.toUpperCase(),headers:l.normalize().toJSON(),body:t,duplex:"half",credentials:A?g:void 0});let O=await fetch(T),_=Wt&&(u==="stream"||u==="response");if(Wt&&(a||_&&D)){let U={};["status","statusText","headers"].forEach(Tn=>{U[Tn]=O[Tn]});let Y=c.toFiniteNumber(O.headers.get("content-length")),[J,ke]=a&&zt(Y,de(Yt(a),!0))||[];O=new Response(Gt(O.body,io,J,()=>{ke&&ke(),D&&D()}),U)}u=u||"text";let $=await at[c.findKey(at,u)||"text"](O,n);return!_&&D&&D(),await new Promise((U,Y)=>{Ie(U,Y,{data:$,headers:M.from(O.headers),status:O.status,statusText:O.statusText,config:n,request:T})})}catch(A){throw D&&D(),A&&A.name==="TypeError"&&/Load failed|fetch/i.test(A.message)?Object.assign(new y("Network Error",y.ERR_NETWORK,n,T),{cause:A.cause||A}):y.from(A,A&&A.code,n,T)}});var Xt={http:tt,xhr:ro,fetch:uo};c.forEach(Xt,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});var mo=n=>`- ${n}`,Is=n=>c.isFunction(n)||n===null||n===!1,ut={getAdapter:n=>{n=c.isArray(n)?n:[n];let{length:e}=n,o,t,r={};for(let s=0;s`adapter ${a} `+(d===!1?"is not supported by the environment":"is not available in the build")),i=e?s.length>1?`since : `+s.map(mo).join(` -`):" "+mo(s[0]):"as no adapter specified";throw new y("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return t},adapters:Xt};function Qt(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new q(null,n)}function dt(n){return Qt(n),n.headers=M.from(n.headers),n.data=Re.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),ut.getAdapter(n.adapter||ce.adapter)(n).then(function(t){return Qt(n),t.data=Re.call(n,n.transformResponse,t),t.headers=M.from(t.headers),t},function(t){return xe(t)||(Qt(n),t&&t.response&&(t.response.data=Re.call(n,n.transformResponse,t.response),t.response.headers=M.from(t.response.headers))),Promise.reject(t)})}var mt="1.9.0";var pt={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{pt[n]=function(t){return typeof t===n||"a"+(e<1?"n ":" ")+n}});var po={};pt.transitional=function(e,o,t){function r(s,i){return"[Axios v"+mt+"] Transitional option '"+s+"'"+i+(t?". "+t:"")}return(s,i,a)=>{if(e===!1)throw new y(r(i," has been removed"+(o?" in "+o:"")),y.ERR_DEPRECATED);return o&&!po[i]&&(po[i]=!0,console.warn(r(i," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(s,i,a):!0}};pt.spelling=function(e){return(o,t)=>(console.warn(`${t} is likely a misspelling of ${e}`),!0)};function Ss(n,e,o){if(typeof n!="object")throw new y("options must be an object",y.ERR_BAD_OPTION_VALUE);let t=Object.keys(n),r=t.length;for(;r-- >0;){let s=t[r],i=e[s];if(i){let a=n[s],p=a===void 0||i(a,s,n);if(p!==!0)throw new y("option "+s+" must be "+p,y.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new y("Unknown option "+s,y.ERR_BAD_OPTION)}}var Le={assertOptions:Ss,validators:pt};var H=Le.validators,me=class{constructor(e){this.defaults=e||{},this.interceptors={request:new kt,response:new kt}}async request(e,o){try{return await this._request(e,o)}catch(t){if(t instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;let s=r.stack?r.stack.replace(/^.+\n/,""):"";try{t.stack?s&&!String(t.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(t.stack+=` -`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=F(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Le.assertOptions(t,{silentJSONParsing:H.transitional(H.boolean),forcedJSONParsing:H.transitional(H.boolean),clarifyTimeoutError:H.transitional(H.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Le.assertOptions(r,{encode:H.function,serialize:H.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Le.assertOptions(o,{baseUrl:H.spelling("baseURL"),withXsrfToken:H.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],g=>{delete s[g]}),o.headers=M.concat(i,s);let a=[],p=!0;this.interceptors.request.forEach(function(D){typeof D.runWhen=="function"&&D.runWhen(o)===!1||(p=p&&D.synchronous,a.unshift(D.fulfilled,D.rejected))});let u=[];this.interceptors.response.forEach(function(D){u.push(D.fulfilled,D.rejected)});let l,T=0,b;if(!p){let g=[dt.bind(this),void 0];for(g.unshift.apply(g,a),g.push.apply(g,u),b=g.length,l=Promise.resolve(o);T{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new q(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},lo=Zt;function en(n){return function(o){return n.apply(null,o)}}function tn(n){return c.isObject(n)&&n.isAxiosError===!0}var nn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nn).forEach(([n,e])=>{nn[e]=n});var fo=nn;function To(n){let e=new Ce(n),o=Ee(Ce.prototype.request,e);return c.extend(o,Ce.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return To(F(n,r))},o}var w=To(ce);w.Axios=Ce;w.CanceledError=q;w.CancelToken=lo;w.isCancel=xe;w.VERSION=mt;w.toFormData=K;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(e){return Promise.all(e)};w.spread=en;w.isAxiosError=tn;w.mergeConfig=F;w.AxiosHeaders=M;w.formToJSON=n=>rt(c.isHTMLForm(n)?new FormData(n):n);w.getAdapter=ut.getAdapter;w.HttpStatusCode=fo;w.default=w;var lt=w;var{Axios:yd,AxiosError:go,CanceledError:Ed,isCancel:Dd,CancelToken:bd,VERSION:vd,all:Nd,Cancel:Rd,isAxiosError:xd,spread:Id,toFormData:Sd,AxiosHeaders:Ld,HttpStatusCode:Cd,formToJSON:Ad,getAdapter:wd,mergeConfig:Od}=lt;var j=class n extends go{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var ho=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new j('Properties "amountFix" and "amountPercent" cannot be used at the same time');return R(e,{setTotalPrice(t){m(e,"totalPrice",t)},getTotalPrice(t){return d(e,"totalPrice",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setAmountFix(t){m(e,"amountFix",t)},getAmountFix(t){return d(e,"amountFix",t)},setAmountPercent(t){m(e,"amountPercent",t)},getAmountPercent(t){return d(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},ho,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},ft=ho;var ee=n=>{let e=N(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>ft(t))),Ge(e)};var Po=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setName(t){m(e,"name",t)},getName(t){return d(e,"name",t)},setLicensingModel(t){m(e,"licensingModel",t)},getLicensingModel(t){return d(e,"licensingModel",t)},setMaxCheckoutValidity(t){m(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return d(e,"maxCheckoutValidity",t)},setYellowThreshold(t){m(e,"yellowThreshold",t)},getYellowThreshold(t){return d(e,"yellowThreshold",t)},setRedThreshold(t){m(e,"redThreshold",t)},getRedThreshold(t){return d(e,"redThreshold",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},serialize(){return L(e,{ignore:["inUse"]})}},Po)},Tt=Po;var te=n=>Tt(N(n));var yo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setExpirationTime(t){m(e,"expirationTime",t)},getExpirationTime(t){return d(e,"expirationTime",t)},setTokenType(t){m(e,"tokenType",t)},getTokenType(t){return d(e,"tokenType",t)},setLicenseeNumber(t){m(e,"licenseeNumber",t)},getLicenseeNumber(t){return d(e,"licenseeNumber",t)},setAction(t){m(e,"action",t)},getAction(t){return d(e,"action",t)},setApiKeyRole(t){m(e,"apiKeyRole",t)},getApiKeyRole(t){return d(e,"apiKeyRole",t)},setBundleNumber(t){m(e,"bundleNumber",t)},getBundleNumber(t){return d(e,"bundleNumber",t)},setBundlePrice(t){m(e,"bundlePrice",t)},getBundlePrice(t){return d(e,"bundlePrice",t)},setProductNumber(t){m(e,"productNumber",t)},getProductNumber(t){return d(e,"productNumber",t)},setPredefinedShoppingItem(t){m(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return d(e,"predefinedShoppingItem",t)},setSuccessURL(t){m(e,"successURL",t)},getSuccessURL(t){return d(e,"successURL",t)},setSuccessURLTitle(t){m(e,"successURLTitle",t)},getSuccessURLTitle(t){return d(e,"successURLTitle",t)},setCancelURL(t){m(e,"cancelURL",t)},getCancelURL(t){return d(e,"cancelURL",t)},setCancelURLTitle(t){m(e,"cancelURLTitle",t)},getCancelURLTitle(t){return d(e,"cancelURLTitle",t)},getShopURL(t){return d(e,"shopURL",t)},serialize(){return L(e,{ignore:["shopURL"]})}},yo)},gt=yo;var pe=n=>{let e=N(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),gt(e)};var on=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},ht=(n,e)=>new on(n,e);var Eo=function(n={}){let e={...n};return R(e,{setActive(t){m(e,"active",t)},getActive(t){return d(e,"active",t)},setNumber(t){m(e,"number",t)},getNumber(t){return d(e,"number",t)},setStatus(t){m(e,"status",t)},getStatus(t){return d(e,"status",t)},setSource(t){m(e,"source",t)},getSource(t){return d(e,"source",t)},setGrandTotal(t){m(e,"grandTotal",t)},getGrandTotal(t){return d(e,"grandTotal",t)},setDiscount(t){m(e,"discount",t)},getDiscount(t){return d(e,"discount",t)},setCurrency(t){m(e,"currency",t)},getCurrency(t){return d(e,"currency",t)},setDateCreated(t){m(e,"dateCreated",t)},getDateCreated(t){return d(e,"dateCreated",t)},setDateClosed(t){m(e,"dateClosed",t)},getDateClosed(t){return d(e,"dateClosed",t)},setPaymentMethod(t){m(e,"paymentMethod",t)},getPaymentMethod(t){return d(e,"paymentMethod",t)},setLicenseTransactionJoins(t){m(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return d(e,"licenseTransactionJoins",t)},serialize(){return L(e,{ignore:["licenseTransactionJoins","inUse"]})}},Eo)},Ae=Eo;var ne=n=>{let e=N(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Ae({number:s}),p=re({number:i});return ht(a,p)})),Ae(e)};var Do=lt.create(),bo=null,vo=[],No=n=>{Do=n},Pt=()=>Do,rn=n=>{bo=n},Ro=()=>bo,sn=n=>{vo=n},xo=()=>vo;var an={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var yt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var le=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${an.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(p,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?yt(p):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${an.version}`),p)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case V.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new j('Missing parameter "username"');if(!n.getPassword())throw new j('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case V.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new j('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case V.ANONYMOUS_IDENTIFICATION:break;default:throw new j("Unknown security mode")}let a=r?.axiosInstance||Pt();try{let p=await a(i),u=p.data.infos?.info||[];if(rn(p),sn(u),r?.onResponse&&r.onResponse(p),u.length>0){r?.onInfo&&r.onInfo(u);let l=u.find(({type:T})=>T==="ERROR");if(l)throw new j(l.value,l.id,p.config,p.request,p)}return p}catch(p){let u=p,l=u.response,T=l?.data?.infos?.info||[];if(rn(l||null),sn(T),p.isAxiosError){let b=p.message;if(l?.data&&T.length>0){let I=T.find(({type:g})=>g==="ERROR");I&&(b=I.value)}throw new j(b,u.code,u.config,u.request,u.response)}throw p}};var Io=(n,e,o,t)=>le(n,"get",e,o,t),So=(n,e,o,t)=>le(n,"post",e,o,t),Lo=(n,e,o,t)=>le(n,"delete",e,o,t);var Cs={setAxiosInstance(n){No(n)},getAxiosInstance(){return Pt()},getLastHttpRequestInfo(){return Ro()},getInfo(){return xo()},get(n,e,o,t){return Io(n,e,o,t)},post(n,e,o,t){return So(n,e,o,t)},delete(n,e,o,t){return Lo(n,e,o,t)},request(n,e,o,t,r){return le(n,e,o,t,r)},toQueryString(n){return yt(n)}},f=Cs;var Co=";",Ao="=",S=n=>Object.keys(n).map(e=>`${e}${Ao}${String(n[e])}`).join(Co),wo=n=>{let e={};return n.split(Co).forEach(o=>{let[t,r]=o.split(Ao);e[t]=r}),e};var cn=n=>typeof n<"u"&&typeof n!="function",we=n=>cn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,v=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!we(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},E=(n,e)=>{if(v(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var Oo=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,p,u){return Object.hasOwn(i,p)?i[p]:Reflect.get(a,p,u)},set(a,p,u,l){return Reflect.set(a,p,u,l)},getPrototypeOf(){return Oo.prototype||null}})},x=Oo;var fe=h.Bundle.ENDPOINT_PATH,As=h.Bundle.ENDPOINT_OBTAIN_PATH,Et=h.Bundle.TYPE,ws={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${fe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Et);return G(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,fe,t,o)).data.items,i=s?.item.filter(a=>a.type===Et).map(a=>G(a));return x(i||[],s)},async create(n,e,o){v(e,"bundle");let r=(await f.post(n,fe,e.serialize(),o)).data.items?.item.find(s=>s.type===Et);return G(r)},async update(n,e,o,t){E(e,"number"),v(o,"bundle");let s=(await f.post(n,`${fe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Et);return G(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${fe}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){E(e,"number"),E(o,"licenseeNumber");let r={[h.Licensee.LICENSEE_NUMBER]:o};return(await f.post(n,`${fe}/${e}/${As}`,r,t)).data.items?.item.filter(p=>p.type===h.License.TYPE)?.map(p=>z(p))||[]}},Mo=ws;var un=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!we(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Dt=()=>new un;var oe=h.Licensee.ENDPOINT_PATH,Os=h.Licensee.ENDPOINT_PATH_VALIDATE,Ms=h.Licensee.ENDPOINT_PATH_TRANSFER,bt=h.Licensee.TYPE,_s={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===bt);return W(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,oe,t,o)).data.items,i=s?.item.filter(a=>a.type===bt).map(a=>W(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,oe,r,t)).data.items?.item.find(a=>a.type===bt);return W(i)},async update(n,e,o,t){E(e,"number"),v(o,"licensee");let s=(await f.post(n,`${oe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bt);return W(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${oe}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){E(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let l=o.licenseeProperties;Object.keys(l).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let T=o.getParameters();Object.keys(T).forEach((b,I)=>{r[`${h.ProductModule.PRODUCT_MODULE_NUMBER}${I}`]=b;let g=T[b];g&&Object.keys(g).forEach(D=>{r[D+I]=g[D]})})}let s=await f.post(n,`${oe}/${e}/${Os}`,r,t),i=Dt(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===h.Validation.TYPE)?.forEach(u=>{i.setValidation(N(u))}),i},transfer(n,e,o,t){E(e,"number"),E(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return f.post(n,`${oe}/${e}/${Ms}`,r,t)}},_o=_s;var Oe=h.License.ENDPOINT_PATH,vt=h.License.TYPE,Us={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===vt);return z(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Oe,t,o)).data.items,i=s?.item.filter(a=>a.type===vt).map(a=>z(a));return x(i||[],s)},async create(n,e,o,t,r,s){v(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let p=(await f.post(n,Oe,i,s)).data.items?.item.find(u=>u.type===vt);return z(p)},async update(n,e,o,t,r){E(e,"number"),v(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await f.post(n,`${Oe}/${e}`,s,r)).data.items?.item.find(p=>p.type===vt);return z(a)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Oe}/${e}`,{forceCascade:!!o},t)}},Uo=Us;var Me=h.LicenseTemplate.ENDPOINT_PATH,Nt=h.LicenseTemplate.TYPE,ks={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Me}/${e}`,{},o)).data.items?.item.find(s=>s.type===Nt);return X(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Me,t,o)).data.items,i=s?.item.filter(a=>a.type===Nt).map(a=>X(a));return x(i||[],s)},async create(n,e,o,t){v(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await f.post(n,Me,r,t)).data.items?.item.find(a=>a.type===Nt);return X(i)},async update(n,e,o,t){E(e,"number"),v(o,"licenseTemplate");let s=(await f.post(n,`${Me}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Nt);return X(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Me}/${e}`,{forceCascade:!!o},t)}},ko=ks;var _e=h.Notification.ENDPOINT_PATH,Rt=h.Notification.TYPE,js={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,_e,t,o)).data.items,i=s?.item.filter(a=>a.type===Rt).map(a=>Q(a));return x(i||[],s)},async create(n,e,o){v(e,"notification");let r=(await f.post(n,_e,e.serialize(),o)).data.items?.item.find(s=>s.type===Rt);return Q(r)},async update(n,e,o,t){E(e,"number"),v(o,"notification");let s=(await f.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Rt);return Q(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${_e}/${e}`,{forceCascade:!!o},t)}},jo=js;var dn=h.PaymentMethod.ENDPOINT_PATH,mn=h.PaymentMethod.TYPE,Bs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===mn);return se(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,dn,t,o)).data.items,i=s?.item.filter(a=>a.type===mn).map(a=>se(a));return x(i||[],s)},async update(n,e,o,t){E(e,"number"),v(o,"paymentMethod");let s=(await f.post(n,`${dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===mn);return se(s)}},Bo=Bs;var Ue=h.ProductModule.ENDPOINT_PATH,xt=h.ProductModule.TYPE,Fs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===xt);return te(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Ue,t,o)).data.items,i=s?.item.filter(a=>a.type===xt).map(a=>te(a));return x(i||[],s)},async create(n,e,o,t){v(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,Ue,r,t)).data.items?.item.find(a=>a.type===xt);return te(i)},async update(n,e,o,t){E(e,"number"),v(o,"productModule");let s=(await f.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===xt);return te(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Ue}/${e}`,{forceCascade:!!o},t)}},Fo=Fs;var ke=h.Product.ENDPOINT_PATH,It=h.Product.TYPE,Vs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${ke}/${e}`,{},o)).data.items?.item.find(s=>s.type===It);return ee(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,ke,t,o)).data.items,i=s?.item.filter(a=>a.type===It).map(a=>ee(a));return x(i||[],s)},async create(n,e,o){v(e,"product");let r=(await f.post(n,ke,e.serialize(),o)).data.items?.item.find(s=>s.type===It);return ee(r)},async update(n,e,o,t){E(e,"number"),v(o,"product");let s=(await f.post(n,`${ke}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===It);return ee(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${ke}/${e}`,{forceCascade:!!o},t)}},Vo=Vs;var St=h.Token.ENDPOINT_PATH,pn=h.Token.TYPE,qs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${St}/${e}`,{},o)).data.items?.item.find(s=>s.type===pn);return pe(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,St,t,o)).data.items,i=s?.item.filter(a=>a.type===pn).map(a=>pe(a));return x(i||[],s)},async create(n,e,o){v(e,"token");let r=(await f.post(n,St,e.serialize(),o)).data.items?.item.find(s=>s.type===pn);return pe(r)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${St}/${e}`,{forceCascade:!!o},t)}},qo=qs;var Lt=h.Transaction.ENDPOINT_PATH,Ct=h.Transaction.TYPE,Hs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Lt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Lt,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>ne(a));return x(i||[],s)},async create(n,e,o){v(e,"transaction");let r=(await f.post(n,Lt,e.serialize(),o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async update(n,e,o,t){E(e,"number"),v(o,"transaction");let s=(await f.post(n,`${Lt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return ne(s)}},Ho=Hs;var ln=h.Utility.ENDPOINT_PATH,$s={async listLicenseTypes(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listLicensingModels(n,e){let o=`${ln}/${h.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await f.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return x(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:S(e));let r=`${ln}/${h.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await f.get(n,r,t,o)).data.items,a=h.Utility.COUNTRY_TYPE,p=i?.item.filter(u=>u.type===a).map(u=>$e(u));return x(p||[],i)}},$o=$s;var fn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||V.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},zo=n=>new fn(n);var Tn=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Yo=()=>new Tn;return Xo(zs);})(); +`):" "+mo(s[0]):"as no adapter specified";throw new y("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return t},adapters:Xt};function Qt(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new V(null,n)}function dt(n){return Qt(n),n.headers=M.from(n.headers),n.data=ve.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),ut.getAdapter(n.adapter||ce.adapter)(n).then(function(t){return Qt(n),t.data=ve.call(n,n.transformResponse,t),t.headers=M.from(t.headers),t},function(t){return xe(t)||(Qt(n),t&&t.response&&(t.response.data=ve.call(n,n.transformResponse,t.response),t.response.headers=M.from(t.response.headers))),Promise.reject(t)})}var mt="1.9.0";var pt={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{pt[n]=function(t){return typeof t===n||"a"+(e<1?"n ":" ")+n}});var po={};pt.transitional=function(e,o,t){function r(s,i){return"[Axios v"+mt+"] Transitional option '"+s+"'"+i+(t?". "+t:"")}return(s,i,a)=>{if(e===!1)throw new y(r(i," has been removed"+(o?" in "+o:"")),y.ERR_DEPRECATED);return o&&!po[i]&&(po[i]=!0,console.warn(r(i," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(s,i,a):!0}};pt.spelling=function(e){return(o,t)=>(console.warn(`${t} is likely a misspelling of ${e}`),!0)};function Ss(n,e,o){if(typeof n!="object")throw new y("options must be an object",y.ERR_BAD_OPTION_VALUE);let t=Object.keys(n),r=t.length;for(;r-- >0;){let s=t[r],i=e[s];if(i){let a=n[s],d=a===void 0||i(a,s,n);if(d!==!0)throw new y("option "+s+" must be "+d,y.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new y("Unknown option "+s,y.ERR_BAD_OPTION)}}var Le={assertOptions:Ss,validators:pt};var H=Le.validators,me=class{constructor(e){this.defaults=e||{},this.interceptors={request:new jt,response:new jt}}async request(e,o){try{return await this._request(e,o)}catch(t){if(t instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;let s=r.stack?r.stack.replace(/^.+\n/,""):"";try{t.stack?s&&!String(t.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(t.stack+=` +`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=F(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Le.assertOptions(t,{silentJSONParsing:H.transitional(H.boolean),forcedJSONParsing:H.transitional(H.boolean),clarifyTimeoutError:H.transitional(H.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Le.assertOptions(r,{encode:H.function,serialize:H.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Le.assertOptions(o,{baseUrl:H.spelling("baseURL"),withXsrfToken:H.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],T=>{delete s[T]}),o.headers=M.concat(i,s);let a=[],d=!0;this.interceptors.request.forEach(function(D){typeof D.runWhen=="function"&&D.runWhen(o)===!1||(d=d&&D.synchronous,a.unshift(D.fulfilled,D.rejected))});let u=[];this.interceptors.response.forEach(function(D){u.push(D.fulfilled,D.rejected)});let l,g=0,b;if(!d){let T=[dt.bind(this),void 0];for(T.unshift.apply(T,a),T.push.apply(T,u),b=T.length,l=Promise.resolve(o);g{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new V(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},lo=Zt;function en(n){return function(o){return n.apply(null,o)}}function tn(n){return c.isObject(n)&&n.isAxiosError===!0}var nn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nn).forEach(([n,e])=>{nn[e]=n});var fo=nn;function go(n){let e=new Ce(n),o=Ee(Ce.prototype.request,e);return c.extend(o,Ce.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return go(F(n,r))},o}var w=go(ce);w.Axios=Ce;w.CanceledError=V;w.CancelToken=lo;w.isCancel=xe;w.VERSION=mt;w.toFormData=K;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(e){return Promise.all(e)};w.spread=en;w.isAxiosError=tn;w.mergeConfig=F;w.AxiosHeaders=M;w.formToJSON=n=>rt(c.isHTMLForm(n)?new FormData(n):n);w.getAdapter=ut.getAdapter;w.HttpStatusCode=fo;w.default=w;var lt=w;var{Axios:yd,AxiosError:To,CanceledError:Ed,isCancel:Dd,CancelToken:bd,VERSION:Nd,all:Rd,Cancel:vd,isAxiosError:xd,spread:Id,toFormData:Sd,AxiosHeaders:Ld,HttpStatusCode:Cd,formToJSON:Ad,getAdapter:wd,mergeConfig:Od}=lt;var k=class n extends To{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var Po=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new k('Properties "amountFix" and "amountPercent" cannot be used at the same time');return v(e,{setTotalPrice(t){p(e,"totalPrice",t)},getTotalPrice(t){return m(e,"totalPrice",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setAmountFix(t){p(e,"amountFix",t)},getAmountFix(t){return m(e,"amountFix",t)},setAmountPercent(t){p(e,"amountPercent",t)},getAmountPercent(t){return m(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},Po,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},ft=Po;var ee=n=>{let e=R(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>ft(t))),Ge(e)};var ho=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setLicensingModel(t){p(e,"licensingModel",t)},getLicensingModel(t){return m(e,"licensingModel",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},ho)},gt=ho;var te=n=>gt(R(n));var yo=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setExpirationTime(t){p(e,"expirationTime",t)},getExpirationTime(t){return m(e,"expirationTime",t)},setTokenType(t){p(e,"tokenType",t)},getTokenType(t){return m(e,"tokenType",t)},setLicenseeNumber(t){p(e,"licenseeNumber",t)},getLicenseeNumber(t){return m(e,"licenseeNumber",t)},setAction(t){p(e,"action",t)},getAction(t){return m(e,"action",t)},setApiKeyRole(t){p(e,"apiKeyRole",t)},getApiKeyRole(t){return m(e,"apiKeyRole",t)},setBundleNumber(t){p(e,"bundleNumber",t)},getBundleNumber(t){return m(e,"bundleNumber",t)},setBundlePrice(t){p(e,"bundlePrice",t)},getBundlePrice(t){return m(e,"bundlePrice",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setPredefinedShoppingItem(t){p(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return m(e,"predefinedShoppingItem",t)},setSuccessURL(t){p(e,"successURL",t)},getSuccessURL(t){return m(e,"successURL",t)},setSuccessURLTitle(t){p(e,"successURLTitle",t)},getSuccessURLTitle(t){return m(e,"successURLTitle",t)},setCancelURL(t){p(e,"cancelURL",t)},getCancelURL(t){return m(e,"cancelURL",t)},setCancelURLTitle(t){p(e,"cancelURLTitle",t)},getCancelURLTitle(t){return m(e,"cancelURLTitle",t)},getShopURL(t){return m(e,"shopURL",t)},serialize(){return C(e,{ignore:["shopURL"]})}},yo)},Tt=yo;var pe=n=>{let e=R(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Tt(e)};var on=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Pt=(n,e)=>new on(n,e);var Eo=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setStatus(t){p(e,"status",t)},getStatus(t){return m(e,"status",t)},setSource(t){p(e,"source",t)},getSource(t){return m(e,"source",t)},setGrandTotal(t){p(e,"grandTotal",t)},getGrandTotal(t){return m(e,"grandTotal",t)},setDiscount(t){p(e,"discount",t)},getDiscount(t){return m(e,"discount",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setDateCreated(t){p(e,"dateCreated",t)},getDateCreated(t){return m(e,"dateCreated",t)},setDateClosed(t){p(e,"dateClosed",t)},getDateClosed(t){return m(e,"dateClosed",t)},setPaymentMethod(t){p(e,"paymentMethod",t)},getPaymentMethod(t){return m(e,"paymentMethod",t)},setLicenseTransactionJoins(t){p(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return m(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,C(t,{ignore:["licenseTransactionJoins","inUse"]})}},Eo)},Ae=Eo;var ne=n=>{let e=R(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Ae({number:s}),d=re({number:i});return Pt(a,d)})),Ae(e)};var Do=lt.create(),bo=null,No=[],Ro=n=>{Do=n},ht=()=>Do,rn=n=>{bo=n},vo=()=>bo,sn=n=>{No=n},xo=()=>No;var an={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var yt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var le=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${an.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(d,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?yt(d):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${an.version}`),d)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case q.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new k('Missing parameter "username"');if(!n.getPassword())throw new k('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case q.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new k('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case q.ANONYMOUS_IDENTIFICATION:break;default:throw new k("Unknown security mode")}let a=r?.axiosInstance||ht();try{let d=await a(i),u=d.data.infos?.info||[];if(rn(d),sn(u),r?.onResponse&&r.onResponse(d),u.length>0){r?.onInfo&&r.onInfo(u);let l=u.find(({type:g})=>g==="ERROR");if(l)throw new k(l.value,l.id,d.config,d.request,d)}return d}catch(d){let u=d,l=u.response,g=l?.data?.infos?.info||[];if(rn(l||null),sn(g),d.isAxiosError){let b=d.message;if(l?.data&&g.length>0){let I=g.find(({type:T})=>T==="ERROR");I&&(b=I.value)}throw new k(b,u.code,u.config,u.request,u.response)}throw d}};var Io=(n,e,o,t)=>le(n,"get",e,o,t),So=(n,e,o,t)=>le(n,"post",e,o,t),Lo=(n,e,o,t)=>le(n,"delete",e,o,t);var Cs={setAxiosInstance(n){Ro(n)},getAxiosInstance(){return ht()},getLastHttpRequestInfo(){return vo()},getInfo(){return xo()},get(n,e,o,t){return Io(n,e,o,t)},post(n,e,o,t){return So(n,e,o,t)},delete(n,e,o,t){return Lo(n,e,o,t)},request(n,e,o,t,r){return le(n,e,o,t,r)},toQueryString(n){return yt(n)}},f=Cs;var Co=";",Ao="=",S=n=>Object.keys(n).map(e=>`${e}${Ao}${String(n[e])}`).join(Co),wo=n=>{let e={};return n.split(Co).forEach(o=>{let[t,r]=o.split(Ao);e[t]=r}),e};var cn=n=>typeof n<"u"&&typeof n!="function",we=n=>cn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,N=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!we(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},E=(n,e)=>{if(N(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var Oo=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,d,u){return Object.hasOwn(i,d)?i[d]:Reflect.get(a,d,u)},set(a,d,u,l){return Reflect.set(a,d,u,l)},getPrototypeOf(){return Oo.prototype||null}})},x=Oo;var fe=P.Bundle.ENDPOINT_PATH,As=P.Bundle.ENDPOINT_OBTAIN_PATH,Et=P.Bundle.TYPE,ws={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${fe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Et);return G(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,fe,t,o)).data.items,i=s?.item.filter(a=>a.type===Et).map(a=>G(a));return x(i||[],s)},async create(n,e,o){N(e,"bundle");let r=(await f.post(n,fe,e.serialize(),o)).data.items?.item.find(s=>s.type===Et);return G(r)},async update(n,e,o,t){E(e,"number"),N(o,"bundle");let s=(await f.post(n,`${fe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Et);return G(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${fe}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){E(e,"number"),E(o,"licenseeNumber");let r={[P.Licensee.LICENSEE_NUMBER]:o};return(await f.post(n,`${fe}/${e}/${As}`,r,t)).data.items?.item.filter(d=>d.type===P.License.TYPE)?.map(d=>z(d))||[]}},Mo=ws;var un=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!we(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Dt=()=>new un;var oe=P.Licensee.ENDPOINT_PATH,Os=P.Licensee.ENDPOINT_PATH_VALIDATE,Ms=P.Licensee.ENDPOINT_PATH_TRANSFER,bt=P.Licensee.TYPE,_s={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===bt);return W(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,oe,t,o)).data.items,i=s?.item.filter(a=>a.type===bt).map(a=>W(a));return x(i||[],s)},async create(n,e,o,t){N(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,oe,r,t)).data.items?.item.find(a=>a.type===bt);return W(i)},async update(n,e,o,t){E(e,"number"),N(o,"licensee");let s=(await f.post(n,`${oe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bt);return W(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${oe}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){E(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let l=o.licenseeProperties;Object.keys(l).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let g=o.getParameters();Object.keys(g).forEach((b,I)=>{r[`${P.ProductModule.PRODUCT_MODULE_NUMBER}${I}`]=b;let T=g[b];T&&Object.keys(T).forEach(D=>{r[D+I]=T[D]})})}let s=await f.post(n,`${oe}/${e}/${Os}`,r,t),i=Dt(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===P.Validation.TYPE)?.forEach(u=>{i.setValidation(R(u))}),i},transfer(n,e,o,t){E(e,"number"),E(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return f.post(n,`${oe}/${e}/${Ms}`,r,t)}},_o=_s;var Oe=P.License.ENDPOINT_PATH,Nt=P.License.TYPE,Us={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Nt);return z(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Oe,t,o)).data.items,i=s?.item.filter(a=>a.type===Nt).map(a=>z(a));return x(i||[],s)},async create(n,e,o,t,r,s){N(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let d=(await f.post(n,Oe,i,s)).data.items?.item.find(u=>u.type===Nt);return z(d)},async update(n,e,o,t,r){E(e,"number"),N(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await f.post(n,`${Oe}/${e}`,s,r)).data.items?.item.find(d=>d.type===Nt);return z(a)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Oe}/${e}`,{forceCascade:!!o},t)}},Uo=Us;var Me=P.LicenseTemplate.ENDPOINT_PATH,Rt=P.LicenseTemplate.TYPE,js={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Me}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rt);return X(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Me,t,o)).data.items,i=s?.item.filter(a=>a.type===Rt).map(a=>X(a));return x(i||[],s)},async create(n,e,o,t){N(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await f.post(n,Me,r,t)).data.items?.item.find(a=>a.type===Rt);return X(i)},async update(n,e,o,t){E(e,"number"),N(o,"licenseTemplate");let s=(await f.post(n,`${Me}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Rt);return X(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Me}/${e}`,{forceCascade:!!o},t)}},jo=js;var _e=P.Notification.ENDPOINT_PATH,vt=P.Notification.TYPE,ks={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===vt);return Q(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,_e,t,o)).data.items,i=s?.item.filter(a=>a.type===vt).map(a=>Q(a));return x(i||[],s)},async create(n,e,o){N(e,"notification");let r=(await f.post(n,_e,e.serialize(),o)).data.items?.item.find(s=>s.type===vt);return Q(r)},async update(n,e,o,t){E(e,"number"),N(o,"notification");let s=(await f.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===vt);return Q(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${_e}/${e}`,{forceCascade:!!o},t)}},ko=ks;var dn=P.PaymentMethod.ENDPOINT_PATH,mn=P.PaymentMethod.TYPE,Bs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===mn);return se(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,dn,t,o)).data.items,i=s?.item.filter(a=>a.type===mn).map(a=>se(a));return x(i||[],s)},async update(n,e,o,t){E(e,"number"),N(o,"paymentMethod");let s=(await f.post(n,`${dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===mn);return se(s)}},Bo=Bs;var Ue=P.ProductModule.ENDPOINT_PATH,xt=P.ProductModule.TYPE,Fs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===xt);return te(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Ue,t,o)).data.items,i=s?.item.filter(a=>a.type===xt).map(a=>te(a));return x(i||[],s)},async create(n,e,o,t){N(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,Ue,r,t)).data.items?.item.find(a=>a.type===xt);return te(i)},async update(n,e,o,t){E(e,"number"),N(o,"productModule");let s=(await f.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===xt);return te(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Ue}/${e}`,{forceCascade:!!o},t)}},Fo=Fs;var je=P.Product.ENDPOINT_PATH,It=P.Product.TYPE,qs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${je}/${e}`,{},o)).data.items?.item.find(s=>s.type===It);return ee(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,je,t,o)).data.items,i=s?.item.filter(a=>a.type===It).map(a=>ee(a));return x(i||[],s)},async create(n,e,o){N(e,"product");let r=(await f.post(n,je,e.serialize(),o)).data.items?.item.find(s=>s.type===It);return ee(r)},async update(n,e,o,t){E(e,"number"),N(o,"product");let s=(await f.post(n,`${je}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===It);return ee(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${je}/${e}`,{forceCascade:!!o},t)}},qo=qs;var St=P.Token.ENDPOINT_PATH,pn=P.Token.TYPE,Vs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${St}/${e}`,{},o)).data.items?.item.find(s=>s.type===pn);return pe(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,St,t,o)).data.items,i=s?.item.filter(a=>a.type===pn).map(a=>pe(a));return x(i||[],s)},async create(n,e,o){N(e,"token");let r=(await f.post(n,St,e.serialize(),o)).data.items?.item.find(s=>s.type===pn);return pe(r)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${St}/${e}`,{forceCascade:!!o},t)}},Vo=Vs;var Lt=P.Transaction.ENDPOINT_PATH,Ct=P.Transaction.TYPE,Hs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Lt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Lt,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>ne(a));return x(i||[],s)},async create(n,e,o){N(e,"transaction");let r=(await f.post(n,Lt,e.serialize(),o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async update(n,e,o,t){E(e,"number"),N(o,"transaction");let s=(await f.post(n,`${Lt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return ne(s)}},Ho=Hs;var ln=P.Utility.ENDPOINT_PATH,$s={async listLicenseTypes(n,e){let o=`${ln}/${P.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await f.get(n,o,void 0,e)).data.items,s=P.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>R(a).name);return x(i||[],r)},async listLicensingModels(n,e){let o=`${ln}/${P.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await f.get(n,o,void 0,e)).data.items,s=P.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>R(a).name);return x(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let r=`${ln}/${P.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await f.get(n,r,t,o)).data.items,a=P.Utility.COUNTRY_TYPE,d=i?.item.filter(u=>u.type===a).map(u=>$e(u));return x(d||[],i)}},$o=$s;var fn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||q.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},zo=n=>new fn(n);var gn=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Yo=()=>new gn;return Xo(zs);})(); //# sourceMappingURL=index.global.js.map \ No newline at end of file diff --git a/dist/index.global.js.map b/dist/index.global.js.map index cc996fc..9340202 100644 --- a/dist/index.global.js.map +++ b/dist/index.global.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","message","code","config","request","response","utils_default","prototype","descriptors","error","customProps","axiosError","obj","prop","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","message","config","request","AxiosError_default","utils_default","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","contentType","utils_default","platform_default","type","tokens","token","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","isFetchSupported","isReadableStreamSupported","encodeText","encoder","str","test","fn","args","supportsRequestStream","duplexAccessed","hasContentType","platform_default","DEFAULT_CHUNK_SIZE","supportsResponseStream","utils_default","resolvers","res","type","_","config","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","fetch_default","url","method","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","knownAdapters","null_default","xhr_default","fetch_default","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","adapters_default","adapters","length","nameOrAdapter","rejectedReasons","i","id","AxiosError_default","reasons","state","s","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","message","code","config","request","response","utils_default","prototype","descriptors","error","customProps","axiosError","obj","prop","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","message","config","request","AxiosError_default","utils_default","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","contentType","utils_default","platform_default","type","tokens","token","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","isFetchSupported","isReadableStreamSupported","encodeText","encoder","str","test","fn","args","supportsRequestStream","duplexAccessed","hasContentType","platform_default","DEFAULT_CHUNK_SIZE","supportsResponseStream","utils_default","resolvers","res","type","_","config","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","fetch_default","url","method","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","knownAdapters","null_default","xhr_default","fetch_default","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","adapters_default","adapters","length","nameOrAdapter","rejectedReasons","i","id","AxiosError_default","reasons","state","s","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 541b7d0..2de83d5 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -"use strict";var wt=Object.create;var ee=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var Vt=Object.getOwnPropertyNames;var jt=Object.getPrototypeOf,kt=Object.prototype.hasOwnProperty;var $t=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of Vt(e))!kt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=Ut(e,i))||t.enumerable});return n};var Bt=(n,e,o)=>(o=n!=null?wt(jt(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),qt=n=>Ye(ee({},"__esModule",{value:!0}),n);var Nn={};$t(Nn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>ht,Constants:()=>u,Context:()=>Ot,Country:()=>se,License:()=>w,LicenseService:()=>It,LicenseTemplate:()=>ce,LicenseTemplateService:()=>bt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>Nt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>Lt,Page:()=>y,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Rt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>le,ProductModuleService:()=>Ct,ProductService:()=>xt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>fe,TokenService:()=>St,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>At,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>Mt,ValidationParameters:()=>_t,ValidationResults:()=>De,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Et,filterEncode:()=>D,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>V,itemToTransaction:()=>O,serialize:()=>E});module.exports=qt(Nn);var Yt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Yt;var Ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=Ft;var Ht=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Ht;var Kt=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Kt;var zt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=zt;var Gt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Gt;var Jt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=Jt;var Qt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Qt;var Wt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Wt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Xt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Xt;var Zt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Zt;var en=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=en;var tn=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=tn;var nn=n=>{try{return JSON.parse(n)}catch{return n}},on=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=nn(t)}),e},sn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...on(n.property),...sn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var rn=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return xe(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(h=>{h(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=rn;var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var Qe=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Qe)},se=Qe;var re=n=>se(P(n));var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},w=We;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},st)},le=st;var M=n=>le(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},rt)},fe=rt;var V=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),fe(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=z({number:s}),l=w({number:c});return Te(d,l)})),z(e)};var ct=Bt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},lt=()=>mt,Me=n=>{ut=n},ft=()=>ut;var Oe={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var j=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ge(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let l=await d(c),f=l.data.infos?.info||[];if(Ae(l),Me(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let h=f.find(({type:b})=>b==="ERROR");if(h)throw new v(h.value,h.id,l.config,l.request,l)}return l}catch(l){let f=l,h=f.response,b=h?.data?.infos?.info||[];if(Ae(h||null),Me(b),l.isAxiosError){let L=l.message;if(h?.data&&b.length>0){let $=b.find(({type:B})=>B==="ERROR");$&&(L=$.value)}throw new v(L,f.code,f.config,f.request,f.response)}throw l}};var Tt=(n,e,o,t)=>j(n,"get",e,o,t),Pt=(n,e,o,t)=>j(n,"post",e,o,t),gt=(n,e,o,t)=>j(n,"delete",e,o,t);var cn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return lt()},getInfo(){return ft()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return j(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=cn;var yt=";",Dt="=",D=n=>Object.keys(n).map(e=>`${e}${Dt}${String(n[e])}`).join(yt),Et=n=>{let e={};return n.split(yt).forEach(o=>{let[t,i]=o.split(Dt);e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var vt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,h){return Reflect.set(d,l,f,h)},getPrototypeOf(){return vt.prototype||null}})},y=vt;var k=u.Bundle.ENDPOINT_PATH,dn=u.Bundle.ENDPOINT_OBTAIN_PATH,ye=u.Bundle.TYPE,mn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${k}/${e}`,{},o)).data.items?.item.find(s=>s.type===ye);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,k,t,o)).data.items,c=s?.item.filter(d=>d.type===ye).map(d=>R(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,k,e.serialize(),o)).data.items?.item.find(s=>s.type===ye);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${k}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ye);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${k}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${k}/${e}/${dn}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>I(l))||[]}},ht=mn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},De=()=>new we;var _=u.Licensee.ENDPOINT_PATH,un=u.Licensee.ENDPOINT_PATH_VALIDATE,pn=u.Licensee.ENDPOINT_PATH_TRANSFER,Ee=u.Licensee.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ee);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_,t,o)).data.items,c=s?.item.filter(d=>d.type===Ee).map(d=>C(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===Ee);return C(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ee);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let h=o.licenseeProperties;Object.keys(h).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let b=o.getParameters();Object.keys(b).forEach((L,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=L;let B=b[L];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${un}`,i,t),c=De(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${pn}`,i,t)}},Nt=ln;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,J,t,o)).data.items,c=s?.item.filter(d=>d.type===ve).map(d=>I(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,J,c,s)).data.items?.item.find(f=>f.type===ve);return I(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(l=>l.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},It=fn;var Q=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Q,t,o)).data.items,c=s?.item.filter(d=>d.type===he).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Q,i,t)).data.items?.item.find(d=>d.type===he);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},bt=Tn;var W=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,W,t,o)).data.items,c=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,W,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Lt=Pn;var Ue=u.PaymentMethod.ENDPOINT_PATH,Ve=u.PaymentMethod.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ve);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Ue,t,o)).data.items,c=s?.item.filter(d=>d.type===Ve).map(d=>U(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ve);return U(s)}},Rt=gn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,X,t,o)).data.items,c=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},Ct=yn;var Z=u.Product.ENDPOINT_PATH,be=u.Product.TYPE,Dn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===be);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Z,t,o)).data.items,c=s?.item.filter(d=>d.type===be).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===be);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===be);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},xt=Dn;var Le=u.Token.ENDPOINT_PATH,je=u.Token.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Le}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return V(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Le,t,o)).data.items,c=s?.item.filter(d=>d.type===je).map(d=>V(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,Le,e.serialize(),o)).data.items?.item.find(s=>s.type===je);return V(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Le}/${e}`,{forceCascade:!!o},t)}},St=En;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,vn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Re,t,o)).data.items,c=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===Ce);return O(s)}},At=vn;var ke=u.Utility.ENDPOINT_PATH,hn={async listLicenseTypes(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${ke}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${ke}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>re(f));return y(l||[],c)}},Mt=hn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},Ot=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},_t=()=>new Be; +"use strict";var wt=Object.create;var ee=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var kt=Object.getPrototypeOf,Vt=Object.prototype.hasOwnProperty;var $t=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of jt(e))!Vt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=Ut(e,i))||t.enumerable});return n};var Bt=(n,e,o)=>(o=n!=null?wt(kt(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),qt=n=>Ye(ee({},"__esModule",{value:!0}),n);var Nn={};$t(Nn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>ht,Constants:()=>u,Context:()=>Ot,Country:()=>se,License:()=>w,LicenseService:()=>It,LicenseTemplate:()=>ce,LicenseTemplateService:()=>Lt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>Nt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>bt,Page:()=>y,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Rt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>fe,ProductModuleService:()=>Ct,ProductService:()=>xt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>le,TokenService:()=>St,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>At,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>Mt,ValidationParameters:()=>_t,ValidationResults:()=>Ee,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Dt,filterEncode:()=>E,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>j,itemToTransaction:()=>O,serialize:()=>D});module.exports=qt(Nn);var Yt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Yt;var Ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=Ft;var Ht=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Ht;var Kt=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Kt;var zt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=zt;var Gt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Gt;var Jt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=Jt;var Wt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Wt;var Qt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Qt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Xt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Xt;var Zt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Zt;var en=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=en;var tn=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=tn;var nn=n=>{try{return JSON.parse(n)}catch{return n}},on=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=nn(t)}),e},sn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...on(n.property),...sn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var rn=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return xe(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(h=>{h(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=rn;var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var We=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},We)},se=We;var re=n=>se(P(n));var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},w=Qe;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},st)},fe=st;var M=n=>fe(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},rt)},le=rt;var j=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),le(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=z({number:s}),f=w({number:a});return Te(d,f)})),z(e)};var ct=Bt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},ft=()=>mt,Me=n=>{ut=n},lt=()=>ut;var Oe={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var k=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ge(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let f=await d(a),l=f.data.infos?.info||[];if(Ae(f),Me(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let h=l.find(({type:L})=>L==="ERROR");if(h)throw new v(h.value,h.id,f.config,f.request,f)}return f}catch(f){let l=f,h=l.response,L=h?.data?.infos?.info||[];if(Ae(h||null),Me(L),f.isAxiosError){let b=f.message;if(h?.data&&L.length>0){let $=L.find(({type:B})=>B==="ERROR");$&&(b=$.value)}throw new v(b,l.code,l.config,l.request,l.response)}throw f}};var Tt=(n,e,o,t)=>k(n,"get",e,o,t),Pt=(n,e,o,t)=>k(n,"post",e,o,t),gt=(n,e,o,t)=>k(n,"delete",e,o,t);var cn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return ft()},getInfo(){return lt()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return k(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=cn;var yt=";",Et="=",E=n=>Object.keys(n).map(e=>`${e}${Et}${String(n[e])}`).join(yt),Dt=n=>{let e={};return n.split(yt).forEach(o=>{let[t,i]=o.split(Et);e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var vt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,h){return Reflect.set(d,f,l,h)},getPrototypeOf(){return vt.prototype||null}})},y=vt;var V=u.Bundle.ENDPOINT_PATH,dn=u.Bundle.ENDPOINT_OBTAIN_PATH,ye=u.Bundle.TYPE,mn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${V}/${e}`,{},o)).data.items?.item.find(s=>s.type===ye);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,V,t,o)).data.items,a=s?.item.filter(d=>d.type===ye).map(d=>R(d));return y(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,V,e.serialize(),o)).data.items?.item.find(s=>s.type===ye);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${V}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ye);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${V}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${V}/${e}/${dn}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>I(f))||[]}},ht=mn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Ee=()=>new we;var _=u.Licensee.ENDPOINT_PATH,un=u.Licensee.ENDPOINT_PATH_VALIDATE,pn=u.Licensee.ENDPOINT_PATH_TRANSFER,De=u.Licensee.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===De);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,_,t,o)).data.items,a=s?.item.filter(d=>d.type===De).map(d=>C(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===De);return C(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===De);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let h=o.licenseeProperties;Object.keys(h).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let L=o.getParameters();Object.keys(L).forEach((b,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=b;let B=L[b];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${un}`,i,t),a=Ee(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${pn}`,i,t)}},Nt=fn;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,J,t,o)).data.items,a=s?.item.filter(d=>d.type===ve).map(d=>I(d));return y(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,J,a,s)).data.items?.item.find(l=>l.type===ve);return I(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(f=>f.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},It=ln;var W=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,W,t,o)).data.items,a=s?.item.filter(d=>d.type===he).map(d=>x(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,W,i,t)).data.items?.item.find(d=>d.type===he);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Lt=Tn;var Q=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Q,t,o)).data.items,a=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return y(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,Q,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},bt=Pn;var Ue=u.PaymentMethod.ENDPOINT_PATH,je=u.PaymentMethod.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Ue,t,o)).data.items,a=s?.item.filter(d=>d.type===je).map(d=>U(d));return y(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===je);return U(s)}},Rt=gn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,X,t,o)).data.items,a=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return y(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},Ct=yn;var Z=u.Product.ENDPOINT_PATH,Le=u.Product.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===Le);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Z,t,o)).data.items,a=s?.item.filter(d=>d.type===Le).map(d=>A(d));return y(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===Le);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Le);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},xt=En;var be=u.Token.ENDPOINT_PATH,ke=u.Token.TYPE,Dn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${be}/${e}`,{},o)).data.items?.item.find(s=>s.type===ke);return j(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,be,t,o)).data.items,a=s?.item.filter(d=>d.type===ke).map(d=>j(d));return y(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,be,e.serialize(),o)).data.items?.item.find(s=>s.type===ke);return j(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${be}/${e}`,{forceCascade:!!o},t)}},St=Dn;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,vn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Re,t,o)).data.items,a=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return y(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ce);return O(s)}},At=vn;var Ve=u.Utility.ENDPOINT_PATH,hn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>re(l));return y(f||[],a)}},Mt=hn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},Ot=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},_t=()=>new Be; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index e77b065..d57ad0c 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.mjs b/dist/index.mjs index d2203aa..30b8e33 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -1,2 +1,2 @@ -var lt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=lt;var ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=ft;var Tt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=Tt;var Pt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=Pt;var gt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=gt;var yt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),le=yt;var Dt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),Q=Dt;var Et=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),fe=Et;var vt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),W=vt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:le,TokenType:Q,TransactionSource:fe,TransactionStatus:W,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:Q},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:W},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ht=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Nt=ht;var It=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),bt=It;var Lt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Rt=Lt;var Ct=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),xt=Ct;var St=n=>{try{return JSON.parse(n)}catch{return n}},At=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=St(t)}),e},Mt=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...At(n.property),...Mt(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),a=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var E=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var Ot=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(c,d){a(n,c,d)},get(c,d){return r(n,c,d)},has(c){return Te(n,c)},setProperty(c,d){this.set(c,d)},addProperty(c,d){this.set(c,d)},getProperty(c,d){return this.get(c,d)},hasProperty(c){return this.has(c)},setProperties(c){Object.entries(c).forEach(([d,l])=>{this.set(d,l)})},serialize(){return E(n)}};return new Proxy(n,{get(c,d,l){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(f=>{f(c,d,l)}),Reflect.get(c,d,l))},set(c,d,l,f){return i.set.forEach(v=>{v(c,d,l,f)}),Reflect.set(c,d,l,f)},getPrototypeOf(){return o.prototype||null}})},g=Ot;var qe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setLicenseTemplateNumbers(t){a(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},serialize(){if(e.licenseTemplateNumbers){let t=e.licenseTemplateNumbers.join(",");return E({...e,licenseTemplateNumbers:t})}return E(e)}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var ye=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){a(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setStartDate(t){a(e,"startDate",t)},getStartDate(t){return r(e,"startDate",t)},setParentfeature(t){a(e,"parentfeature",t)},getParentfeature(t){return r(e,"parentfeature",t)},serialize(){return E(e,{ignore:["inUse"]})}},Fe)},k=Fe;var L=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),k(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){a(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return E(e,{ignore:["inUse"]})}},He)},De=He;var x=n=>De(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){a(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){a(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){a(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){a(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){a(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setGracePeriod(t){a(e,"gracePeriod",t)},getGracePeriod(t){return r(e,"gracePeriod",t)},setTimeVolume(t){a(e,"timeVolume",t)},getTimeVolume(t){return r(e,"timeVolume",t)},setTimeVolumePeriod(t){a(e,"timeVolumePeriod",t)},getTimeVolumePeriod(t){return r(e,"timeVolumePeriod",t)},setMaxSessions(t){a(e,"maxSessions",t)},getMaxSessions(t){return r(e,"maxSessions",t)},setQuantity(t){a(e,"quantity",t)},getQuantity(t){return r(e,"quantity",t)},setProductModuleNumber(t){a(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},Ke)},Ee=Ke;var S=n=>Ee(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){a(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){a(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){a(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){a(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=E(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){a(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){a(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){a(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){a(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){a(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=E(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as _t}from"axios";var h=class n extends _t{constructor(o,t,i,s,c,d){super(o,t,i,s,c);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var Qe=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){a(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){a(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){a(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},Qe,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=Qe;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var We=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){a(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){a(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setMaxCheckoutValidity(t){a(e,"maxCheckoutValidity",t)},getMaxCheckoutValidity(t){return r(e,"maxCheckoutValidity",t)},setYellowThreshold(t){a(e,"yellowThreshold",t)},getYellowThreshold(t){return r(e,"yellowThreshold",t)},setRedThreshold(t){a(e,"redThreshold",t)},getRedThreshold(t){return r(e,"redThreshold",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return E(e,{ignore:["inUse"]})}},We)},be=We;var O=n=>be(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){a(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){a(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){a(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){a(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){a(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){a(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){a(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){a(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){a(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){a(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){a(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){a(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){a(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return E(e,{ignore:["shopURL"]})}},Xe)},Le=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Le(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){a(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){a(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){a(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){a(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){a(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){a(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){a(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){a(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){a(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){a(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){a(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){return E(e,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{dateCreated:o,dateClosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o)),t&&typeof t=="string"&&(e.dateClosed=new Date(t));let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:c})=>{let d=X({number:s}),l=k({number:c});return Ce(d,l)})),X(e)};import wt from"axios";var et=wt.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let c=t[s];o(c,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let c={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(l,f)=>f["Content-Type"]==="application/x-www-form-urlencoded"?ee(l):(f["NetLicensing-Origin"]||(f["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),l)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(c.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),c.data=t):c.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');c.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let l=await d(c),f=l.data.infos?.info||[];if(xe(l),Se(f),i?.onResponse&&i.onResponse(l),f.length>0){i?.onInfo&&i.onInfo(f);let v=f.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,l.config,l.request,l)}return l}catch(l){let f=l,v=f.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),l.isAxiosError){let b=l.message;if(v?.data&&I.length>0){let V=I.find(({type:j})=>j==="ERROR");V&&(b=V.value)}throw new h(b,f.code,f.config,f.request,f.response)}throw l}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var Vt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=Vt;var dt=";",mt="=",D=n=>Object.keys(n).map(e=>`${e}${mt}${String(n[e])}`).join(dt),jt=n=>{let e={};return n.split(dt).forEach(o=>{let[t,i]=o.split(mt);e[t]=i}),e};var ut=n=>typeof n<"u"&&typeof n!="function",te=n=>ut(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var pt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),c={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,l,f){return Object.hasOwn(c,l)?c[l]:Reflect.get(d,l,f)},set(d,l,f,v){return Reflect.set(d,l,f,v)},getPrototypeOf(){return pt.prototype||null}})},y=pt;var U=u.Bundle.ENDPOINT_PATH,kt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,$t={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,U,t,o)).data.items,c=s?.item.filter(d=>d.type===ne).map(d=>C(d));return y(c||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${kt}`,i,t)).data.items?.item.filter(l=>l.type===u.License.TYPE)?.map(l=>L(l))||[]}},Bt=$t;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,qt=u.Licensee.ENDPOINT_PATH_VALIDATE,Yt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,R,t,o)).data.items,c=s?.item.filter(d=>d.type===oe).map(d=>x(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(c)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let f=o.productNumber;f&&(i.productNumber=f);let v=o.licenseeProperties;Object.keys(v).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((b,V)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${V}`]=b;let j=I[b];j&&Object.keys(j).forEach($e=>{i[$e+V]=j[$e]})})}let s=await m.post(n,`${R}/${e}/${qt}`,i,t),c=Oe(),d=s.data.ttl;return d&&c.setTtl(d),s.data.items?.item.filter(f=>f.type===u.Validation.TYPE)?.forEach(f=>{c.setValidation(P(f))}),c},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Yt}`,i,t)}},Ht=Ft;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return L(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,q,t,o)).data.items,c=s?.item.filter(d=>d.type===ie).map(d=>L(d));return y(c||[],s)},async create(n,e,o,t,i,s){T(i,"license");let c=i.serialize();e&&(c.licenseeNumber=e),o&&(c.licenseTemplateNumber=o),t&&(c.transactionNumber=t);let l=(await m.post(n,q,c,s)).data.items?.item.find(f=>f.type===ie);return L(l)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(l=>l.type===ie);return L(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,Y,t,o)).data.items,c=s?.item.filter(d=>d.type===se).map(d=>S(d));return y(c||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let c=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(c)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Qt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,F,t,o)).data.items,c=s?.item.filter(d=>d.type===re).map(d=>A(d));return y(c||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Wt=Qt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,_e,t,o)).data.items,c=s?.item.filter(d=>d.type===we).map(d=>$(d));return y(c||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===we);return $(s)}},Zt=Xt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,H,t,o)).data.items,c=s?.item.filter(d=>d.type===ae).map(d=>O(d));return y(c||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let c=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(c)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},tn=en;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,K,t,o)).data.items,c=s?.item.filter(d=>d.type===ce).map(d=>M(d));return y(c||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},on=nn;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,de,t,o)).data.items,c=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return y(c||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},rn=sn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,an={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let s=(await m.get(n,me,t,o)).data.items,c=s?.item.filter(d=>d.type===ue).map(d=>_(d));return y(c||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(c=>c.type===ue);return _(s)}},cn=an;var Ve=u.Utility.ENDPOINT_PATH,dn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,c=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(c||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:D(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,c=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,l=c?.item.filter(f=>f.type===d).map(f=>ye(f));return y(l||[],c)}},mn=dn;var je=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},un=n=>new je(n);var ke=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},pn=()=>new ke;export{Nt as ApiKeyRole,Pe as Bundle,Bt as BundleService,u as Constants,un as Context,ge as Country,k as License,zt as LicenseService,Ee as LicenseTemplate,Jt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,De as Licensee,pe as LicenseeSecretMode,Ht as LicenseeService,bt as LicensingModel,h as NlicError,Rt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Wt as NotificationService,y as Page,he as PaymentMethod,xt as PaymentMethodEnum,Zt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,be as ProductModule,tn as ProductModuleService,on as ProductService,N as SecurityMode,m as Service,le as TimeVolumePeriod,Le as Token,rn as TokenService,Q as TokenType,X as Transaction,cn as TransactionService,fe as TransactionSource,W as TransactionStatus,mn as UtilityService,pn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,jt as filterDecode,D as filterEncode,ut as isDefined,te as isValid,C as itemToBundle,ye as itemToCountry,L as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,E as serialize}; +var ft=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=ft;var lt=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=lt;var Tt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=Tt;var Pt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=Pt;var gt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=gt;var yt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),fe=yt;var Et=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),W=Et;var Dt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),le=Dt;var vt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),Q=vt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:fe,TokenType:W,TransactionSource:le,TransactionStatus:Q,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:W},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:Q},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ht=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Nt=ht;var It=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),Lt=It;var bt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Rt=bt;var Ct=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),xt=Ct;var St=n=>{try{return JSON.parse(n)}catch{return n}},At=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=St(t)}),e},Mt=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...At(n.property),...Mt(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var Ot=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return Te(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(v=>{v(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=Ot;var qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var ye=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Fe)},V=Fe;var b=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),V(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},He)},Ee=He;var x=n=>Ee(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ke)},De=Ke;var S=n=>De(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as _t}from"axios";var h=class n extends _t{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var We=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},We,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=We;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},Le=Qe;var O=n=>Le(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},Xe)},be=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),be(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=X({number:s}),f=V({number:a});return Ce(d,f)})),X(e)};import wt from"axios";var et=wt.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ee(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let f=await d(a),l=f.data.infos?.info||[];if(xe(f),Se(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let v=l.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,f.config,f.request,f)}return f}catch(f){let l=f,v=l.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),f.isAxiosError){let L=f.message;if(v?.data&&I.length>0){let j=I.find(({type:k})=>k==="ERROR");j&&(L=j.value)}throw new h(L,l.code,l.config,l.request,l.response)}throw f}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var jt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=jt;var dt=";",mt="=",E=n=>Object.keys(n).map(e=>`${e}${mt}${String(n[e])}`).join(dt),kt=n=>{let e={};return n.split(dt).forEach(o=>{let[t,i]=o.split(mt);e[t]=i}),e};var ut=n=>typeof n<"u"&&typeof n!="function",te=n=>ut(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var pt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,v){return Reflect.set(d,f,l,v)},getPrototypeOf(){return pt.prototype||null}})},y=pt;var U=u.Bundle.ENDPOINT_PATH,Vt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,$t={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,U,t,o)).data.items,a=s?.item.filter(d=>d.type===ne).map(d=>C(d));return y(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${Vt}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>b(f))||[]}},Bt=$t;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,qt=u.Licensee.ENDPOINT_PATH_VALIDATE,Yt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,R,t,o)).data.items,a=s?.item.filter(d=>d.type===oe).map(d=>x(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let v=o.licenseeProperties;Object.keys(v).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((L,j)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${j}`]=L;let k=I[L];k&&Object.keys(k).forEach($e=>{i[$e+j]=k[$e]})})}let s=await m.post(n,`${R}/${e}/${qt}`,i,t),a=Oe(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Yt}`,i,t)}},Ht=Ft;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return b(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,q,t,o)).data.items,a=s?.item.filter(d=>d.type===ie).map(d=>b(d));return y(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,q,a,s)).data.items?.item.find(l=>l.type===ie);return b(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(f=>f.type===ie);return b(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Y,t,o)).data.items,a=s?.item.filter(d=>d.type===se).map(d=>S(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Wt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,F,t,o)).data.items,a=s?.item.filter(d=>d.type===re).map(d=>A(d));return y(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Qt=Wt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,_e,t,o)).data.items,a=s?.item.filter(d=>d.type===we).map(d=>$(d));return y(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===we);return $(s)}},Zt=Xt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,H,t,o)).data.items,a=s?.item.filter(d=>d.type===ae).map(d=>O(d));return y(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},tn=en;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,K,t,o)).data.items,a=s?.item.filter(d=>d.type===ce).map(d=>M(d));return y(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},on=nn;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,de,t,o)).data.items,a=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return y(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},rn=sn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,an={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,me,t,o)).data.items,a=s?.item.filter(d=>d.type===ue).map(d=>_(d));return y(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ue);return _(s)}},cn=an;var je=u.Utility.ENDPOINT_PATH,dn={async listLicenseTypes(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listLicensingModels(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let i=`${je}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>ye(l));return y(f||[],a)}},mn=dn;var ke=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},un=n=>new ke(n);var Ve=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},pn=()=>new Ve;export{Nt as ApiKeyRole,Pe as Bundle,Bt as BundleService,u as Constants,un as Context,ge as Country,V as License,zt as LicenseService,De as LicenseTemplate,Jt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,Ee as Licensee,pe as LicenseeSecretMode,Ht as LicenseeService,Lt as LicensingModel,h as NlicError,Rt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Qt as NotificationService,y as Page,he as PaymentMethod,xt as PaymentMethodEnum,Zt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,Le as ProductModule,tn as ProductModuleService,on as ProductService,N as SecurityMode,m as Service,fe as TimeVolumePeriod,be as Token,rn as TokenService,W as TokenType,X as Transaction,cn as TransactionService,le as TransactionSource,Q as TransactionStatus,mn as UtilityService,pn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,kt as filterDecode,E as filterEncode,ut as isDefined,te as isValid,C as itemToBundle,ye as itemToCountry,b as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,D as serialize}; //# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/dist/index.mjs.map b/dist/index.mjs.map index b384e24..24e40e5 100644 --- a/dist/index.mjs.map +++ b/dist/index.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n serialize(this: void): Record {\r\n if (props.licenseTemplateNumbers) {\r\n const licenseTemplateNumbers = props.licenseTemplateNumbers.join(',');\r\n return serialize({ ...props, licenseTemplateNumbers });\r\n }\r\n\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * License entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\r\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\r\n * transaction status is set to closed.\r\n * @property string number\r\n *\r\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\r\n * @property string name\r\n *\r\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\r\n * the license is excluded from the validation process.\r\n * @property boolean active\r\n *\r\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\r\n * set from license template on creation.\r\n * @property number price\r\n *\r\n * specifies currency for the license price. Check data types to discover which currencies are\r\n * supported. Read-only, set from license template on creation.\r\n * @property string currency\r\n *\r\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\r\n * template on creation, if not specified explicitly.\r\n * @property boolean hidden\r\n *\r\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\r\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\r\n * changed after the license is created.\r\n * @property string licenseeNumber\r\n *\r\n * The unique identifier for the license template from which this license was created.\r\n * @property string licenseTemplateNumber\r\n *\r\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\r\n * use. If false, the license is not currently assigned or in use.\r\n * @property boolean inUse\r\n *\r\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\r\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\r\n * period and limits associated with the license.\r\n * @property number timeVolume\r\n *\r\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\r\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\r\n * time is measured in days, weeks, or any other defined period.\r\n * @property string timeVolumePeriod\r\n *\r\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\r\n * the license becomes active and the associated time volume starts being consumed.\r\n * It can be represented as a string \"now\" or a Date object.\r\n * @property string|Date Date startDate\r\n *\r\n * Parent(Feature) license number\r\n * @property string parentfeature\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\r\n * licenseTemplateNumber.\r\n */\r\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\r\n const props: LicenseProps = { ...(properties as T) };\r\n\r\n const methods: LicenseMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, number: string): void {\r\n set(props, 'licenseeNumber', number);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumber(this: void, number: string): void {\r\n set(props, 'licenseTemplateNumber', number);\r\n },\r\n\r\n getLicenseTemplateNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseTemplateNumber', def) as string | D;\r\n },\r\n\r\n // TimeVolume\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setStartDate(this: void, startDate: Date | 'now'): void {\r\n set(props, 'startDate', startDate);\r\n },\r\n\r\n getStartDate(this: void, def?: D): Date | 'now' | D {\r\n return get(props, 'startDate', def) as Date | 'now' | D;\r\n },\r\n\r\n // Rental\r\n setParentfeature(this: void, parentfeature?: string): void {\r\n set(props, 'parentfeature', parentfeature);\r\n },\r\n\r\n getParentfeature(this: void, def?: D): string | D {\r\n return get(props, 'parentfeature', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseProps, methods, License);\r\n};\r\n\r\nexport default License;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod';\r\nimport { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setGracePeriod(this: void, gradePeriod: boolean): void {\r\n set(props, 'gracePeriod', gradePeriod);\r\n },\r\n\r\n getGracePeriod(this: void, def?: D): boolean | D {\r\n return get(props, 'gracePeriod', def) as boolean | D;\r\n },\r\n\r\n setTimeVolume(this: void, timeVolume: number): void {\r\n set(props, 'timeVolume', timeVolume);\r\n },\r\n\r\n getTimeVolume(this: void, def?: D): number | D {\r\n return get(props, 'timeVolume', def) as number | D;\r\n },\r\n\r\n setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void {\r\n set(props, 'timeVolumePeriod', timeVolumePeriod);\r\n },\r\n\r\n getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D {\r\n return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D;\r\n },\r\n\r\n setMaxSessions(this: void, maxSessions: number): void {\r\n set(props, 'maxSessions', maxSessions);\r\n },\r\n\r\n getMaxSessions(this: void, def?: D): number | D {\r\n return get(props, 'maxSessions', def) as number | D;\r\n },\r\n\r\n setQuantity(this: void, quantity: number): void {\r\n set(props, 'quantity', quantity);\r\n },\r\n\r\n getQuantity(this: void, def?: D): number | D {\r\n return get(props, 'quantity', def) as number | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void {\r\n set(props, 'maxCheckoutValidity', maxCheckoutValidity);\r\n },\r\n\r\n getMaxCheckoutValidity(this: void, def?: D): number | D {\r\n return get(props, 'maxCheckoutValidity', def) as number | D;\r\n },\r\n\r\n setYellowThreshold(this: void, yellowThreshold: number): void {\r\n set(props, 'yellowThreshold', yellowThreshold);\r\n },\r\n\r\n getYellowThreshold(this: void, def?: D): number | D {\r\n return get(props, 'yellowThreshold', def) as number | D;\r\n },\r\n\r\n setRedThreshold(this: void, redThreshold: number): void {\r\n set(props, 'redThreshold', redThreshold);\r\n },\r\n\r\n getRedThreshold(this: void, def?: D): number | D {\r\n return get(props, 'redThreshold', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { dateCreated, dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","licenseTemplateNumbers","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","timeVolume","timeVolumePeriod","startDate","parentfeature","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","gradePeriod","timeVolume","timeVolumePeriod","maxSessions","quantity","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","maxCheckoutValidity","yellowThreshold","redThreshold","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/src/converters/itemToTransaction.ts b/src/converters/itemToTransaction.ts index 05157d8..bffa79d 100644 --- a/src/converters/itemToTransaction.ts +++ b/src/converters/itemToTransaction.ts @@ -18,14 +18,16 @@ import { TransactionProps } from '@/types/entities/Transaction'; export default (item?: Item) => { const props = itemToObject>(item); - const { dateCreated, dateClosed } = props; + const { datecreated: dateCreated, dateclosed: dateClosed } = props; if (dateCreated && typeof dateCreated === 'string') { props.dateCreated = new Date(dateCreated); + delete props.datecreated; } if (dateClosed && typeof dateClosed === 'string') { props.dateClosed = new Date(dateClosed); + delete props.dateclosed; } const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined = diff --git a/src/entities/License.ts b/src/entities/License.ts index 038f145..ba91859 100644 --- a/src/entities/License.ts +++ b/src/entities/License.ts @@ -5,7 +5,6 @@ * @copyright 2017 Labs64 NetLicensing */ // types -import { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod'; import { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License'; // utils @@ -146,38 +145,12 @@ const License = function (properties: LicenseProps = {} as return get(props, 'licenseTemplateNumber', def) as string | D; }, - // TimeVolume - setTimeVolume(this: void, timeVolume: number): void { - set(props, 'timeVolume', timeVolume); + setProductModuleNumber(this: void, number: string): void { + set(props, 'productModuleNumber', number); }, - getTimeVolume(this: void, def?: D): number | D { - return get(props, 'timeVolume', def) as number | D; - }, - - setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void { - set(props, 'timeVolumePeriod', timeVolumePeriod); - }, - - getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D { - return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D; - }, - - setStartDate(this: void, startDate: Date | 'now'): void { - set(props, 'startDate', startDate); - }, - - getStartDate(this: void, def?: D): Date | 'now' | D { - return get(props, 'startDate', def) as Date | 'now' | D; - }, - - // Rental - setParentfeature(this: void, parentfeature?: string): void { - set(props, 'parentfeature', parentfeature); - }, - - getParentfeature(this: void, def?: D): string | D { - return get(props, 'parentfeature', def) as string | D; + getProductModuleNumber(this: void, def?: D): string | D { + return get(props, 'productModuleNumber', def) as string | D; }, serialize(this: void): Record { diff --git a/src/entities/LicenseTemplate.ts b/src/entities/LicenseTemplate.ts index 7e2c73c..389648e 100644 --- a/src/entities/LicenseTemplate.ts +++ b/src/entities/LicenseTemplate.ts @@ -9,8 +9,11 @@ import defineEntity from '@/entities/defineEntity'; // types import { LicenseTypeValues } from '@/types/constants/LicenseType'; -import { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod'; -import { LicenseTemplateMethods, LicenseTemplateProps, LicenseTemplateEntity } from '@/types/entities/LicenseTemplate'; +import { + LicenseTemplateMethods, + LicenseTemplateProps, + LicenseTemplateEntity, +} from '@/types/entities/LicenseTemplate'; // utils import { set, get } from '@/utils/helpers'; @@ -149,46 +152,6 @@ const LicenseTemplate = function ( return get(props, 'hideLicenses', def) as boolean | D; }, - setGracePeriod(this: void, gradePeriod: boolean): void { - set(props, 'gracePeriod', gradePeriod); - }, - - getGracePeriod(this: void, def?: D): boolean | D { - return get(props, 'gracePeriod', def) as boolean | D; - }, - - setTimeVolume(this: void, timeVolume: number): void { - set(props, 'timeVolume', timeVolume); - }, - - getTimeVolume(this: void, def?: D): number | D { - return get(props, 'timeVolume', def) as number | D; - }, - - setTimeVolumePeriod(this: void, timeVolumePeriod: TimeVolumePeriodValues): void { - set(props, 'timeVolumePeriod', timeVolumePeriod); - }, - - getTimeVolumePeriod(this: void, def?: D): TimeVolumePeriodValues | D { - return get(props, 'timeVolumePeriod', def) as TimeVolumePeriodValues | D; - }, - - setMaxSessions(this: void, maxSessions: number): void { - set(props, 'maxSessions', maxSessions); - }, - - getMaxSessions(this: void, def?: D): number | D { - return get(props, 'maxSessions', def) as number | D; - }, - - setQuantity(this: void, quantity: number): void { - set(props, 'quantity', quantity); - }, - - getQuantity(this: void, def?: D): number | D { - return get(props, 'quantity', def) as number | D; - }, - setProductModuleNumber(this: void, productModuleNumber: string): void { set(props, 'productModuleNumber', productModuleNumber); }, diff --git a/src/entities/ProductModule.ts b/src/entities/ProductModule.ts index a0529c9..0fbd4de 100644 --- a/src/entities/ProductModule.ts +++ b/src/entities/ProductModule.ts @@ -9,7 +9,11 @@ import defineEntity from '@/entities/defineEntity'; import { LicensingModelValues } from '@/types/constants/LicensingModel'; // types -import { ProductModuleEntity, ProductModuleMethods, ProductModuleProps } from '@/types/entities/ProductModule'; +import { + ProductModuleEntity, + ProductModuleMethods, + ProductModuleProps, +} from '@/types/entities/ProductModule'; // utils import { set, get } from '@/utils/helpers'; @@ -84,30 +88,6 @@ const ProductModule = function ( return get(props, 'licensingModel', def) as LicensingModelValues | D; }, - setMaxCheckoutValidity(this: void, maxCheckoutValidity: number): void { - set(props, 'maxCheckoutValidity', maxCheckoutValidity); - }, - - getMaxCheckoutValidity(this: void, def?: D): number | D { - return get(props, 'maxCheckoutValidity', def) as number | D; - }, - - setYellowThreshold(this: void, yellowThreshold: number): void { - set(props, 'yellowThreshold', yellowThreshold); - }, - - getYellowThreshold(this: void, def?: D): number | D { - return get(props, 'yellowThreshold', def) as number | D; - }, - - setRedThreshold(this: void, redThreshold: number): void { - set(props, 'redThreshold', redThreshold); - }, - - getRedThreshold(this: void, def?: D): number | D { - return get(props, 'redThreshold', def) as number | D; - }, - setProductNumber(this: void, productNumber: string): void { set(props, 'productNumber', productNumber); }, diff --git a/src/entities/Transaction.ts b/src/entities/Transaction.ts index 3546034..da8552e 100644 --- a/src/entities/Transaction.ts +++ b/src/entities/Transaction.ts @@ -144,7 +144,15 @@ const Transaction = function ( }, serialize(this: void) { - return serialize(props, { ignore: ['licenseTransactionJoins', 'inUse'] }); + const clone: Record = {...props}; + + clone.datecreated = props.dateCreated; + clone.dateclosed = props.dateClosed + + delete clone.dateCreated; + delete clone.dateClosed; + + return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] }); }, }; diff --git a/src/types/constants/LicenseType.ts b/src/types/constants/LicenseType.ts index 2f5eb50..21b0065 100644 --- a/src/types/constants/LicenseType.ts +++ b/src/types/constants/LicenseType.ts @@ -5,6 +5,5 @@ * @copyright 2017 Labs64 NetLicensing */ import LicenseType from '@/constants/LicenseType'; - export type LicenseTypeKeys = keyof typeof LicenseType; -export type LicenseTypeValues = (typeof LicenseType)[LicenseTypeKeys]; +export type LicenseTypeValues = (typeof LicenseType)[LicenseTypeKeys]; \ No newline at end of file diff --git a/src/types/constants/LicensingModel.ts b/src/types/constants/LicensingModel.ts index 4af9440..2a5d4d6 100644 --- a/src/types/constants/LicensingModel.ts +++ b/src/types/constants/LicensingModel.ts @@ -7,4 +7,4 @@ import LicensingModel from '@/constants/LicensingModel'; export type LicensingModelKeys = keyof typeof LicensingModel; -export type LicensingModelValues = (typeof LicensingModel)[LicensingModelKeys]; +export type LicensingModelValues = (typeof LicensingModel)[LicensingModelKeys]; \ No newline at end of file diff --git a/src/types/entities/License.ts b/src/types/entities/License.ts index 2a39bcf..15af803 100644 --- a/src/types/entities/License.ts +++ b/src/types/entities/License.ts @@ -6,7 +6,6 @@ */ // types import { RequiredProps } from '@/types'; -import type { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod'; import type { Entity } from '@/types/entities/defineEntity'; export type LicenseProps = { @@ -18,15 +17,7 @@ export type LicenseProps = { hidden?: boolean; licenseeNumber?: string; licenseTemplateNumber?: string; - - // TimeVolume - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - startDate?: Date | 'now'; - - // Rental - parentfeature?: string; - + productModuleNumber?: string; readonly inUse?: boolean; } & T; @@ -66,25 +57,9 @@ export interface LicenseMethods { getLicenseTemplateNumber(def?: D): string | D; - // TimeVolume - - setTimeVolume(timeVolume: number): void; - - getTimeVolume(def?: D): number | D; - - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - - setStartDate(startDate: Date | 'now'): void; - - getStartDate(def?: D): Date | 'now' | D; - - // Rental - - setParentfeature(parentfeature?: string): void; + setProductModuleNumber(number: string): void; - getParentfeature(def?: D): string | D; + getProductModuleNumber(def?: D): string | D; serialize(): Record; } diff --git a/src/types/entities/LicenseTemplate.ts b/src/types/entities/LicenseTemplate.ts index ed18ba1..5c46d61 100644 --- a/src/types/entities/LicenseTemplate.ts +++ b/src/types/entities/LicenseTemplate.ts @@ -7,7 +7,6 @@ // types import { RequiredProps } from '@/types'; import type { LicenseTypeValues } from '@/types/constants/LicenseType'; -import type { TimeVolumePeriodValues } from '@/types/constants/TimeVolumePeriod'; import { Entity } from '@/types/entities/defineEntity'; export type LicenseTemplateProps = { @@ -20,11 +19,6 @@ export type LicenseTemplateProps = { automatic?: boolean; hidden?: boolean; hideLicenses?: boolean; - gracePeriod?: boolean; - timeVolume?: number; - timeVolumePeriod?: TimeVolumePeriodValues; - maxSessions?: number; - quantity?: number; productModuleNumber?: string; readonly inUse?: boolean; } & T; @@ -72,26 +66,6 @@ export interface LicenseTemplateMethods { getHideLicenses(def?: D): boolean | D; - setGracePeriod(gradePeriod: boolean): void; - - getGracePeriod(def?: D): boolean | D; - - setTimeVolume(timeVolume: number): void; - - getTimeVolume(def?: D): number | D; - - setTimeVolumePeriod(timeVolumePeriod: TimeVolumePeriodValues): void; - - getTimeVolumePeriod(def?: D): TimeVolumePeriodValues | D; - - setMaxSessions(maxSessions: number): void; - - getMaxSessions(def?: D): number | D; - - setQuantity(quantity: number): void; - - getQuantity(def?: D): number | D; - setProductModuleNumber(productModuleNumber: string): void; getProductModuleNumber(def?: D): string | D; diff --git a/src/types/entities/ProductModule.ts b/src/types/entities/ProductModule.ts index a621623..f1906cf 100644 --- a/src/types/entities/ProductModule.ts +++ b/src/types/entities/ProductModule.ts @@ -7,7 +7,6 @@ // types import { RequiredProps } from '@/types'; import { LicensingModelValues } from '@/types/constants/LicensingModel'; -import { NodeSecretModeValues } from '@/types/constants/NodeSecretMode'; import { Entity } from '@/types/entities/defineEntity'; export type ProductModuleProps = { @@ -15,11 +14,7 @@ export type ProductModuleProps = { number?: string; name?: string; licensingModel?: LicensingModelValues; - maxCheckoutValidity?: number; - yellowThreshold?: number; - redThreshold?: number; productNumber?: string; - nodeSecretMode?: NodeSecretModeValues; readonly inUse?: boolean; } & T; @@ -46,18 +41,6 @@ export interface ProductModuleMethods { getLicensingModel(def?: D): LicensingModelValues | D; - setMaxCheckoutValidity(maxCheckoutValidity: number): void; - - getMaxCheckoutValidity(def?: D): number | D; - - setYellowThreshold(yellowThreshold: number): void; - - getYellowThreshold(def?: D): number | D; - - setRedThreshold(redThreshold: number): void; - - getRedThreshold(def?: D): number | D; - setProductNumber(productNumber: string): void; getProductNumber(def?: D): string | D; diff --git a/src/types/entities/index.ts b/src/types/entities/index.ts index 72aed48..eafdece 100644 --- a/src/types/entities/index.ts +++ b/src/types/entities/index.ts @@ -1 +1,2 @@ export type RequiredProps = Required>; +export type DateField = Date | 'now'; \ No newline at end of file diff --git a/test/specs/converters/itemToLicense.spec.ts b/test/specs/converters/itemToLicense.spec.ts index d6e9c8c..3f1df65 100644 --- a/test/specs/converters/itemToLicense.spec.ts +++ b/test/specs/converters/itemToLicense.spec.ts @@ -9,6 +9,7 @@ import License from '@/entities/License'; // types import { Item } from '@/types/api/response'; import { LicenseProps } from '@/types/entities/License'; +import { TimeVolumePeriodValues } from "@/types"; describe('itemToLicense converter', () => { it('should correctly convert item to License', () => { @@ -25,7 +26,7 @@ describe('itemToLicense converter', () => { { value: '10', name: 'timeVolume' }, { value: 'DAY', name: 'timeVolumePeriod' }, { value: '2024-01-03T12:00:00.000Z', name: 'startDate' }, - { value: 'PF1', name: 'parentfeature' }, + { value: 'PF1', name: 'parentFeature' }, { value: 'X', name: 'customProperty' }, { value: 'true', name: 'inUse' }, ], @@ -33,9 +34,14 @@ describe('itemToLicense converter', () => { type: 'License', }; - const result = itemToLicense(item); + const result = itemToLicense<{ startDate: Date }>(item); - const expected: LicenseProps<{ customProperty: string }> = { + const expected: LicenseProps<{ + customProperty: string; + timeVolume: number; + timeVolumePeriod: TimeVolumePeriodValues; + parentFeature: string; + }> = { number: 'L1', active: true, name: 'Sample name', @@ -46,13 +52,13 @@ describe('itemToLicense converter', () => { licenseTemplateNumber: 'LT1', timeVolume: 10, timeVolumePeriod: 'DAY', - parentfeature: 'PF1', + parentFeature: 'PF1', customProperty: 'X', inUse: true, }; expect(result).toBeInstanceOf(License); expect(result).toMatchObject(expected); - expect((result.startDate as Date).toISOString()).toBe('2024-01-03T12:00:00.000Z'); + expect((result.startDate)?.toISOString()).toBe('2024-01-03T12:00:00.000Z'); }); }); diff --git a/test/specs/converters/itemToLicenseTemplate.spec.ts b/test/specs/converters/itemToLicenseTemplate.spec.ts index 4123e0a..bf486c3 100644 --- a/test/specs/converters/itemToLicenseTemplate.spec.ts +++ b/test/specs/converters/itemToLicenseTemplate.spec.ts @@ -7,6 +7,7 @@ import itemToLicenseTemplate from '@/converters/itemToLicenseTemplate'; import LicenseTemplate from '@/entities/LicenseTemplate'; // types +import { TimeVolumePeriodValues } from "@/types"; import { Item } from '@/types/api/response'; import { LicenseTemplateProps } from '@/types/entities/LicenseTemplate'; @@ -38,7 +39,14 @@ describe('itemToLicenseTemplate converter', () => { const result = itemToLicenseTemplate(item); - const expected: LicenseTemplateProps<{ customProperty: string }> = { + const expected: LicenseTemplateProps<{ + gracePeriod: boolean; + customProperty: string; + timeVolume: number; + timeVolumePeriod: TimeVolumePeriodValues; + maxSessions: number; + quantity: number; + }> = { number: 'L1', active: true, name: 'Sample name', diff --git a/test/specs/converters/itemToProductModule.spec.ts b/test/specs/converters/itemToProductModule.spec.ts index 8e0c84d..6a17da9 100644 --- a/test/specs/converters/itemToProductModule.spec.ts +++ b/test/specs/converters/itemToProductModule.spec.ts @@ -31,7 +31,12 @@ describe('itemToProductModule converter', () => { const result = itemToProductModule(item); - const expected: ProductModuleProps<{ customProperty: string }> = { + const expected: ProductModuleProps<{ + customProperty: string; + maxCheckoutValidity: number; + yellowThreshold: number; + redThreshold: number; + }> = { number: 'PM1', active: true, name: 'Sample name', diff --git a/test/specs/entities/License.spec.ts b/test/specs/entities/License.spec.ts index e466b2e..7bfa7e5 100644 --- a/test/specs/entities/License.spec.ts +++ b/test/specs/entities/License.spec.ts @@ -9,6 +9,7 @@ import License from '@/entities/License'; import { LicenseProps } from '@/types/entities/License'; import expectEntity from '@test-utils/expectEntity'; import expectEntityProp from '@test-utils/expectEntityProp'; +import {DateField, TimeVolumePeriodValues} from "@/types"; describe('License Entity', () => { it('should create a License with default properties', () => { @@ -40,10 +41,6 @@ describe('License Entity', () => { hidden: false, licenseeNumber: 'ABC123', licenseTemplateNumber: 'TPL001', - timeVolume: 50, - timeVolumePeriod: TimeVolumePeriod.DAY, - startDate: 'now', - parentfeature: 'PARENT123', inUse: true, }; @@ -187,8 +184,7 @@ describe('License Entity', () => { }); it('should set and get time volume correctly', () => { - const license = License(); - license.setTimeVolume(1); + const license = License({ timeVolume: 1 }); expectEntityProp(license, 'timeVolume', 1); license.timeVolume = 2; @@ -202,9 +198,9 @@ describe('License Entity', () => { }); it('should set and get time volume period correctly', () => { - const license = License(); - - license.setTimeVolumePeriod(TimeVolumePeriod.MONTH); + const license = License<{ timeVolumePeriod: TimeVolumePeriodValues }>({ + timeVolumePeriod: TimeVolumePeriod.MONTH, + }); expectEntityProp(license, 'timeVolumePeriod', TimeVolumePeriod.MONTH); license.timeVolumePeriod = TimeVolumePeriod.DAY; @@ -218,11 +214,9 @@ describe('License Entity', () => { }); it('should set and get start date correctly', () => { - const license = License(); - const date1 = new Date(); - license.setStartDate(date1); + const license = License<{ startDate: DateField }>({ startDate: date1 }); expectEntityProp(license, 'startDate', date1); const date2 = new Date(); @@ -240,19 +234,17 @@ describe('License Entity', () => { }); it('should set and get parent feature correctly', () => { - const license = License(); - - license.setParentfeature('PF1'); - expectEntityProp(license, 'parentfeature', 'PF1'); + const license = License({ parentFeature: 'PF1' }); + expectEntityProp(license, 'parentFeature', 'PF1'); - license.parentfeature = 'PF2'; - expectEntityProp(license, 'parentfeature', 'PF2'); + license.parentFeature = 'PF2'; + expectEntityProp(license, 'parentFeature', 'PF2'); - license.set('parentfeature', 'PF3'); - expectEntityProp(license, 'parentfeature', 'PF3'); + license.set('parentFeature', 'PF3'); + expectEntityProp(license, 'parentFeature', 'PF3'); - license.setProperty('parentfeature', 'PF4'); - expectEntityProp(license, 'parentfeature', 'PF4'); + license.setProperty('parentFeature', 'PF4'); + expectEntityProp(license, 'parentFeature', 'PF4'); }); it('should allow custom properties', () => { @@ -279,7 +271,7 @@ describe('License Entity', () => { timeVolume: 50, timeVolumePeriod: TimeVolumePeriod.DAY, startDate: 'now', - parentfeature: 'PARENT123', + parentFeature: 'PARENT123', inUse: true, }); diff --git a/test/specs/entities/LicenseTemplate.spec.ts b/test/specs/entities/LicenseTemplate.spec.ts index 3105686..c05fde8 100644 --- a/test/specs/entities/LicenseTemplate.spec.ts +++ b/test/specs/entities/LicenseTemplate.spec.ts @@ -9,6 +9,7 @@ import LicenseTemplate from '@/entities/LicenseTemplate'; // test utils import expectEntity from '@test-utils/expectEntity'; import expectEntityProp from '@test-utils/expectEntityProp'; +import {TimeVolumePeriodValues} from "@/types"; describe('LicenseTemplate Entity', () => { it('should create a LicenseTemplate with default properties', () => { @@ -205,9 +206,10 @@ describe('LicenseTemplate Entity', () => { }); it('should set and get grace period status correctly', () => { - const licenseTemplate = LicenseTemplate(); + const licenseTemplate = LicenseTemplate({ + gracePeriod: true, + }); - licenseTemplate.setGracePeriod(true); expectEntityProp(licenseTemplate, 'gracePeriod', true); licenseTemplate.gracePeriod = false; @@ -221,9 +223,10 @@ describe('LicenseTemplate Entity', () => { }); it('should set and get time volume correctly', () => { - const licenseTemplate = LicenseTemplate(); + const licenseTemplate = LicenseTemplate({ + timeVolume: 10, + }); - licenseTemplate.setTimeVolume(10); expectEntityProp(licenseTemplate, 'timeVolume', 10); licenseTemplate.timeVolume = 20; @@ -237,9 +240,10 @@ describe('LicenseTemplate Entity', () => { }); it('should set and get time volume period correctly', () => { - const licenseTemplate = LicenseTemplate(); + const licenseTemplate = LicenseTemplate<{ timeVolumePeriod: TimeVolumePeriodValues }>({ + timeVolumePeriod:TimeVolumePeriod.DAY, + }); - licenseTemplate.setTimeVolumePeriod(TimeVolumePeriod.DAY); expectEntityProp(licenseTemplate, 'timeVolumePeriod', TimeVolumePeriod.DAY); licenseTemplate.timeVolumePeriod = TimeVolumePeriod.MONTH; @@ -253,9 +257,10 @@ describe('LicenseTemplate Entity', () => { }); it('should set and get max sessions correctly', () => { - const licenseTemplate = LicenseTemplate(); + const licenseTemplate = LicenseTemplate({ + maxSessions: 5, + }); - licenseTemplate.setMaxSessions(5); expectEntityProp(licenseTemplate, 'maxSessions', 5); licenseTemplate.maxSessions = 10; @@ -269,9 +274,10 @@ describe('LicenseTemplate Entity', () => { }); it('should set and get quantity correctly for QUANTITY license type', () => { - const licenseTemplate = LicenseTemplate(); + const licenseTemplate = LicenseTemplate({ + quantity: 100, + }); - licenseTemplate.setQuantity(100); expectEntityProp(licenseTemplate, 'quantity', 100); licenseTemplate.quantity = 200; diff --git a/test/specs/entities/ProductModule.spec.ts b/test/specs/entities/ProductModule.spec.ts index 6548248..7de1fb5 100644 --- a/test/specs/entities/ProductModule.spec.ts +++ b/test/specs/entities/ProductModule.spec.ts @@ -111,9 +111,10 @@ describe('ProductModule Entity', () => { }); it('should set and get maxCheckoutValidity correctly', () => { - const productModule = ProductModule(); + const productModule = ProductModule({ + maxCheckoutValidity: 200, + }); - productModule.setMaxCheckoutValidity(200); expectEntityProp(productModule, 'maxCheckoutValidity', 200); productModule.maxCheckoutValidity = 50; @@ -127,9 +128,9 @@ describe('ProductModule Entity', () => { }); it('should set and get yellowThreshold correctly', () => { - const productModule = ProductModule(); - - productModule.setYellowThreshold(200); + const productModule = ProductModule({ + yellowThreshold: 200, + }); expectEntityProp(productModule, 'yellowThreshold', 200); productModule.yellowThreshold = 50; @@ -143,9 +144,10 @@ describe('ProductModule Entity', () => { }); it('should set and get redThreshold correctly', () => { - const productModule = ProductModule(); + const productModule = ProductModule({ + redThreshold: 200, + }); - productModule.setRedThreshold(200); expectEntityProp(productModule, 'redThreshold', 200); productModule.redThreshold = 50; From 7764620dbda6bfd8846706c134258cef1f658846 Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Tue, 17 Feb 2026 15:39:16 +0200 Subject: [PATCH 4/6] cleanup update dependencies --- package-lock.json | 2038 +++++++------------ package.json | 2 +- test/specs/converters/itemToLicense.spec.ts | 2 +- 3 files changed, 747 insertions(+), 1295 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6c2888e..cc88ef7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -32,9 +32,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.5.tgz", - "integrity": "sha512-9o3TMmpmftaCMepOdA5k/yDw8SfInyzWWTjYTFCX3kPSDJMROQTb8jg+h9Cnwnmm1vOzvxN7gIfB5V2ewpjtGA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.3.tgz", + "integrity": "sha512-9fJMTNFTWZMh5qwrBItuziu834eOCUcEqymSH7pY+zoMVEZg3gcPuBNxH1EvfVYe9h0x/Ptw8KBzv7qxb7l8dg==", "cpu": [ "ppc64" ], @@ -49,9 +49,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.5.tgz", - "integrity": "sha512-AdJKSPeEHgi7/ZhuIPtcQKr5RQdo6OO2IL87JkianiMYMPbCtot9fxPbrMiBADOWWm3T2si9stAiVsGbTQFkbA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.3.tgz", + "integrity": "sha512-i5D1hPY7GIQmXlXhs2w8AWHhenb00+GxjxRncS2ZM7YNVGNfaMxgzSGuO8o8SJzRc/oZwU2bcScvVERk03QhzA==", "cpu": [ "arm" ], @@ -66,9 +66,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.5.tgz", - "integrity": "sha512-VGzGhj4lJO+TVGV1v8ntCZWJktV7SGCs3Pn1GRWI1SBFtRALoomm8k5E9Pmwg3HOAal2VDc2F9+PM/rEY6oIDg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.3.tgz", + "integrity": "sha512-YdghPYUmj/FX2SYKJ0OZxf+iaKgMsKHVPF1MAq/P8WirnSpCStzKJFjOjzsW0QQ7oIAiccHdcqjbHmJxRb/dmg==", "cpu": [ "arm64" ], @@ -83,9 +83,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.5.tgz", - "integrity": "sha512-D2GyJT1kjvO//drbRT3Hib9XPwQeWd9vZoBJn+bu/lVsOZ13cqNdDeqIF/xQ5/VmWvMduP6AmXvylO/PIc2isw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.3.tgz", + "integrity": "sha512-IN/0BNTkHtk8lkOM8JWAYFg4ORxBkZQf9zXiEOfERX/CzxW3Vg1ewAhU7QSWQpVIzTW+b8Xy+lGzdYXV6UZObQ==", "cpu": [ "x64" ], @@ -100,9 +100,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.5.tgz", - "integrity": "sha512-GtaBgammVvdF7aPIgH2jxMDdivezgFu6iKpmT+48+F8Hhg5J/sfnDieg0aeG/jfSvkYQU2/pceFPDKlqZzwnfQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.3.tgz", + "integrity": "sha512-Re491k7ByTVRy0t3EKWajdLIr0gz2kKKfzafkth4Q8A5n1xTHrkqZgLLjFEHVD+AXdUGgQMq+Godfq45mGpCKg==", "cpu": [ "arm64" ], @@ -117,9 +117,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.5.tgz", - "integrity": "sha512-1iT4FVL0dJ76/q1wd7XDsXrSW+oLoquptvh4CLR4kITDtqi2e/xwXwdCVH8hVHU43wgJdsq7Gxuzcs6Iq/7bxQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.3.tgz", + "integrity": "sha512-vHk/hA7/1AckjGzRqi6wbo+jaShzRowYip6rt6q7VYEDX4LEy1pZfDpdxCBnGtl+A5zq8iXDcyuxwtv3hNtHFg==", "cpu": [ "x64" ], @@ -134,9 +134,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.5.tgz", - "integrity": "sha512-nk4tGP3JThz4La38Uy/gzyXtpkPW8zSAmoUhK9xKKXdBCzKODMc2adkB2+8om9BDYugz+uGV7sLmpTYzvmz6Sw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.3.tgz", + "integrity": "sha512-ipTYM2fjt3kQAYOvo6vcxJx3nBYAzPjgTCk7QEgZG8AUO3ydUhvelmhrbOheMnGOlaSFUoHXB6un+A7q4ygY9w==", "cpu": [ "arm64" ], @@ -151,9 +151,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.5.tgz", - "integrity": "sha512-PrikaNjiXdR2laW6OIjlbeuCPrPaAl0IwPIaRv+SMV8CiM8i2LqVUHFC1+8eORgWyY7yhQY+2U2fA55mBzReaw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.3.tgz", + "integrity": "sha512-dDk0X87T7mI6U3K9VjWtHOXqwAMJBNN2r7bejDsc+j03SEjtD9HrOl8gVFByeM0aJksoUuUVU9TBaZa2rgj0oA==", "cpu": [ "x64" ], @@ -168,9 +168,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.5.tgz", - "integrity": "sha512-cPzojwW2okgh7ZlRpcBEtsX7WBuqbLrNXqLU89GxWbNt6uIg78ET82qifUy3W6OVww6ZWobWub5oqZOVtwolfw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.3.tgz", + "integrity": "sha512-s6nPv2QkSupJwLYyfS+gwdirm0ukyTFNl3KTgZEAiJDd+iHZcbTPPcWCcRYH+WlNbwChgH2QkE9NSlNrMT8Gfw==", "cpu": [ "arm" ], @@ -185,9 +185,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.5.tgz", - "integrity": "sha512-Z9kfb1v6ZlGbWj8EJk9T6czVEjjq2ntSYLY2cw6pAZl4oKtfgQuS4HOq41M/BcoLPzrUbNd+R4BXFyH//nHxVg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.3.tgz", + "integrity": "sha512-sZOuFz/xWnZ4KH3YfFrKCf1WyPZHakVzTiqji3WDc0BCl2kBwiJLCXpzLzUBLgmp4veFZdvN5ChW4Eq/8Fc2Fg==", "cpu": [ "arm64" ], @@ -202,9 +202,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.5.tgz", - "integrity": "sha512-sQ7l00M8bSv36GLV95BVAdhJ2QsIbCuCjh/uYrWiMQSUuV+LpXwIqhgJDcvMTj+VsQmqAHL2yYaasENvJ7CDKA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.3.tgz", + "integrity": "sha512-yGlQYjdxtLdh0a3jHjuwOrxQjOZYD/C9PfdbgJJF3TIZWnm/tMd/RcNiLngiu4iwcBAOezdnSLAwQDPqTmtTYg==", "cpu": [ "ia32" ], @@ -219,9 +219,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.5.tgz", - "integrity": "sha512-0ur7ae16hDUC4OL5iEnDb0tZHDxYmuQyhKhsPBV8f99f6Z9KQM02g33f93rNH5A30agMS46u2HP6qTdEt6Q1kg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.3.tgz", + "integrity": "sha512-WO60Sn8ly3gtzhyjATDgieJNet/KqsDlX5nRC5Y3oTFcS1l0KWba+SEa9Ja1GfDqSF1z6hif/SkpQJbL63cgOA==", "cpu": [ "loong64" ], @@ -236,9 +236,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.5.tgz", - "integrity": "sha512-kB/66P1OsHO5zLz0i6X0RxlQ+3cu0mkxS3TKFvkb5lin6uwZ/ttOkP3Z8lfR9mJOBk14ZwZ9182SIIWFGNmqmg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.3.tgz", + "integrity": "sha512-APsymYA6sGcZ4pD6k+UxbDjOFSvPWyZhjaiPyl/f79xKxwTnrn5QUnXR5prvetuaSMsb4jgeHewIDCIWljrSxw==", "cpu": [ "mips64el" ], @@ -253,9 +253,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.5.tgz", - "integrity": "sha512-UZCmJ7r9X2fe2D6jBmkLBMQetXPXIsZjQJCjgwpVDz+YMcS6oFR27alkgGv3Oqkv07bxdvw7fyB71/olceJhkQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.3.tgz", + "integrity": "sha512-eizBnTeBefojtDb9nSh4vvVQ3V9Qf9Df01PfawPcRzJH4gFSgrObw+LveUyDoKU3kxi5+9RJTCWlj4FjYXVPEA==", "cpu": [ "ppc64" ], @@ -270,9 +270,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.5.tgz", - "integrity": "sha512-kTxwu4mLyeOlsVIFPfQo+fQJAV9mh24xL+y+Bm6ej067sYANjyEw1dNHmvoqxJUCMnkBdKpvOn0Ahql6+4VyeA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.3.tgz", + "integrity": "sha512-3Emwh0r5wmfm3ssTWRQSyVhbOHvqegUDRd0WhmXKX2mkHJe1SFCMJhagUleMq+Uci34wLSipf8Lagt4LlpRFWQ==", "cpu": [ "riscv64" ], @@ -287,9 +287,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.5.tgz", - "integrity": "sha512-K2dSKTKfmdh78uJ3NcWFiqyRrimfdinS5ErLSn3vluHNeHVnBAFWC8a4X5N+7FgVE1EjXS1QDZbpqZBjfrqMTQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.3.tgz", + "integrity": "sha512-pBHUx9LzXWBc7MFIEEL0yD/ZVtNgLytvx60gES28GcWMqil8ElCYR4kvbV2BDqsHOvVDRrOxGySBM9Fcv744hw==", "cpu": [ "s390x" ], @@ -304,9 +304,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.5.tgz", - "integrity": "sha512-uhj8N2obKTE6pSZ+aMUbqq+1nXxNjZIIjCjGLfsWvVpy7gKCOL6rsY1MhRh9zLtUtAI7vpgLMK6DxjO8Qm9lJw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.3.tgz", + "integrity": "sha512-Czi8yzXUWIQYAtL/2y6vogER8pvcsOsk5cpwL4Gk5nJqH5UZiVByIY8Eorm5R13gq+DQKYg0+JyQoytLQas4dA==", "cpu": [ "x64" ], @@ -321,9 +321,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.5.tgz", - "integrity": "sha512-pwHtMP9viAy1oHPvgxtOv+OkduK5ugofNTVDilIzBLpoWAM16r7b/mxBvfpuQDpRQFMfuVr5aLcn4yveGvBZvw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.3.tgz", + "integrity": "sha512-sDpk0RgmTCR/5HguIZa9n9u+HVKf40fbEUt+iTzSnCaGvY9kFP0YKBWZtJaraonFnqef5SlJ8/TiPAxzyS+UoA==", "cpu": [ "arm64" ], @@ -338,9 +338,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.5.tgz", - "integrity": "sha512-WOb5fKrvVTRMfWFNCroYWWklbnXH0Q5rZppjq0vQIdlsQKuw6mdSihwSo4RV/YdQ5UCKKvBy7/0ZZYLBZKIbwQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.3.tgz", + "integrity": "sha512-P14lFKJl/DdaE00LItAukUdZO5iqNH7+PjoBm+fLQjtxfcfFE20Xf5CrLsmZdq5LFFZzb5JMZ9grUwvtVYzjiA==", "cpu": [ "x64" ], @@ -355,9 +355,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.5.tgz", - "integrity": "sha512-7A208+uQKgTxHd0G0uqZO8UjK2R0DDb4fDmERtARjSHWxqMTye4Erz4zZafx7Di9Cv+lNHYuncAkiGFySoD+Mw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.3.tgz", + "integrity": "sha512-AIcMP77AvirGbRl/UZFTq5hjXK+2wC7qFRGoHSDrZ5v5b8DK/GYpXW3CPRL53NkvDqb9D+alBiC/dV0Fb7eJcw==", "cpu": [ "arm64" ], @@ -372,9 +372,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.5.tgz", - "integrity": "sha512-G4hE405ErTWraiZ8UiSoesH8DaCsMm0Cay4fsFWOOUcz8b8rC6uCvnagr+gnioEjWn0wC+o1/TAHt+It+MpIMg==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.3.tgz", + "integrity": "sha512-DnW2sRrBzA+YnE70LKqnM3P+z8vehfJWHXECbwBmH/CU51z6FiqTQTHFenPlHmo3a8UgpLyH3PT+87OViOh1AQ==", "cpu": [ "x64" ], @@ -388,10 +388,27 @@ "node": ">=18" } }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.3.tgz", + "integrity": "sha512-NinAEgr/etERPTsZJ7aEZQvvg/A6IsZG/LgZy+81wON2huV7SrK3e63dU0XhyZP4RKGyTm7aOgmQk0bGp0fy2g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, "node_modules/@esbuild/sunos-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.5.tgz", - "integrity": "sha512-l+azKShMy7FxzY0Rj4RCt5VD/q8mG/e+mDivgspo+yL8zW7qEwctQ6YqKX34DTEleFAvCIUviCFX1SDZRSyMQA==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.3.tgz", + "integrity": "sha512-PanZ+nEz+eWoBJ8/f8HKxTTD172SKwdXebZ0ndd953gt1HRBbhMsaNqjTyYLGLPdoWHy4zLU7bDVJztF5f3BHA==", "cpu": [ "x64" ], @@ -406,9 +423,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.5.tgz", - "integrity": "sha512-O2S7SNZzdcFG7eFKgvwUEZ2VG9D/sn/eIiz8XRZ1Q/DO5a3s76Xv0mdBzVM5j5R639lXQmPmSo0iRpHqUUrsxw==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.3.tgz", + "integrity": "sha512-B2t59lWWYrbRDw/tjiWOuzSsFh1Y/E95ofKz7rIVYSQkUYBjfSgf6oeYPNWHToFRr2zx52JKApIcAS/D5TUBnA==", "cpu": [ "arm64" ], @@ -423,9 +440,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.5.tgz", - "integrity": "sha512-onOJ02pqs9h1iMJ1PQphR+VZv8qBMQ77Klcsqv9CNW2w6yLqoURLcgERAIurY6QE63bbLuqgP9ATqajFLK5AMQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.3.tgz", + "integrity": "sha512-QLKSFeXNS8+tHW7tZpMtjlNb7HKau0QDpwm49u0vUp9y1WOF+PEzkU84y9GqYaAVW8aH8f3GcBck26jh54cX4Q==", "cpu": [ "ia32" ], @@ -440,9 +457,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", - "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.3.tgz", + "integrity": "sha512-4uJGhsxuptu3OcpVAzli+/gWusVGwZZHTlS63hh++ehExkVT8SgiEf7/uC/PclrPPkLhZqGgCTjd0VWLo6xMqA==", "cpu": [ "x64" ], @@ -457,9 +474,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", + "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", "dev": true, "license": "MIT", "dependencies": { @@ -476,9 +493,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", + "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", "dev": true, "license": "MIT", "engines": { @@ -486,13 +503,13 @@ } }, "node_modules/@eslint/config-array": { - "version": "0.20.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.20.0.tgz", - "integrity": "sha512-fxlS1kkIjx8+vy2SjuCB94q3htSNrufYTXubwiBFeaQHbH6Ipi43gFJq2zCMt6PHhImH3Xmr0NksKDvchWlpQQ==", + "version": "0.21.1", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.1.tgz", + "integrity": "sha512-aw1gNayWpdI/jSYVgzN5pL0cfzU02GT3NBpeT/DXbx1/1x7ZKxFPd9bwrzygx/qiwIQiJ1sw/zD8qY/kRvlGHA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/object-schema": "^2.1.6", + "@eslint/object-schema": "^2.1.7", "debug": "^4.3.1", "minimatch": "^3.1.2" }, @@ -525,19 +542,22 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.2.2.tgz", - "integrity": "sha512-+GPzk8PlG0sPpzdU5ZvIRMPidzAnZDl/s9L+y13iodqvb8leL53bTannOrQ/Im7UkpsmFU5Ily5U60LWixnmLg==", + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.4.2.tgz", + "integrity": "sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==", "dev": true, "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.17.0" + }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.17.0.tgz", + "integrity": "sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -548,9 +568,9 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", + "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", "dev": true, "license": "MIT", "dependencies": { @@ -560,7 +580,7 @@ "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", + "js-yaml": "^4.1.1", "minimatch": "^3.1.2", "strip-json-comments": "^3.1.1" }, @@ -606,9 +626,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.27.0.tgz", - "integrity": "sha512-G5JD9Tu5HJEu4z2Uo4aHY2sLV64B7CDMXxFzqzjl3NKd6RVzSXNoE80jk7Y0lJkTTkjiIhBAqmlYwjuBY3tvpA==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", + "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", "dev": true, "license": "MIT", "engines": { @@ -619,9 +639,9 @@ } }, "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.7.tgz", + "integrity": "sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -629,32 +649,19 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.4.1.tgz", + "integrity": "sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==", "dev": true, "license": "Apache-2.0", "dependencies": { - "@eslint/core": "^0.15.1", + "@eslint/core": "^0.17.0", "levn": "^0.4.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, "node_modules/@humanfs/core": { "version": "0.19.1", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", @@ -666,33 +673,19 @@ } }, "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "version": "0.16.7", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.7.tgz", + "integrity": "sha512-/zUx+yOsIrG4Y43Eh2peDeKCxlRt/gET6aHfaKpuq267qXdYDFViVHfMaLyygZOnl0kGWxFIgsBy8QFuTLUXEQ==", "dev": true, "license": "Apache-2.0", "dependencies": { "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" + "@humanwhocodes/retry": "^0.4.0" }, "engines": { "node": ">=18.18.0" } }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, "node_modules/@humanwhocodes/module-importer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", @@ -721,37 +714,15 @@ "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "version": "0.3.13", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", + "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -764,27 +735,17 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", + "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.31", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", + "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", "dev": true, "license": "MIT", "dependencies": { @@ -792,59 +753,10 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.41.1.tgz", - "integrity": "sha512-NELNvyEWZ6R9QMkiytB4/L4zSEaBC03KIXEghptLGLZWJ6VPrL63ooZQCOnlx36aQPGhzuOMwDerC1Eb2VmrLw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", + "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", "cpu": [ "arm" ], @@ -856,9 +768,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.41.1.tgz", - "integrity": "sha512-DXdQe1BJ6TK47ukAoZLehRHhfKnKg9BjnQYUu9gzhI8Mwa1d2fzxA1aw2JixHVl403bwp1+/o/NhhHtxWJBgEA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", + "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", "cpu": [ "arm64" ], @@ -870,9 +782,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.41.1.tgz", - "integrity": "sha512-5afxvwszzdulsU2w8JKWwY8/sJOLPzf0e1bFuvcW5h9zsEg+RQAojdW0ux2zyYAz7R8HvvzKCjLNJhVq965U7w==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", + "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", "cpu": [ "arm64" ], @@ -884,9 +796,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.41.1.tgz", - "integrity": "sha512-egpJACny8QOdHNNMZKf8xY0Is6gIMz+tuqXlusxquWu3F833DcMwmGM7WlvCO9sB3OsPjdC4U0wHw5FabzCGZg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", + "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", "cpu": [ "x64" ], @@ -898,9 +810,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.41.1.tgz", - "integrity": "sha512-DBVMZH5vbjgRk3r0OzgjS38z+atlupJ7xfKIDJdZZL6sM6wjfDNo64aowcLPKIx7LMQi8vybB56uh1Ftck/Atg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", + "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", "cpu": [ "arm64" ], @@ -912,9 +824,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.41.1.tgz", - "integrity": "sha512-3FkydeohozEskBxNWEIbPfOE0aqQgB6ttTkJ159uWOFn42VLyfAiyD9UK5mhu+ItWzft60DycIN1Xdgiy8o/SA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", + "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", "cpu": [ "x64" ], @@ -926,9 +838,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.41.1.tgz", - "integrity": "sha512-wC53ZNDgt0pqx5xCAgNunkTzFE8GTgdZ9EwYGVcg+jEjJdZGtq9xPjDnFgfFozQI/Xm1mh+D9YlYtl+ueswNEg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", + "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", "cpu": [ "arm" ], @@ -940,9 +852,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.41.1.tgz", - "integrity": "sha512-jwKCca1gbZkZLhLRtsrka5N8sFAaxrGz/7wRJ8Wwvq3jug7toO21vWlViihG85ei7uJTpzbXZRcORotE+xyrLA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", + "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", "cpu": [ "arm" ], @@ -954,9 +866,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.41.1.tgz", - "integrity": "sha512-g0UBcNknsmmNQ8V2d/zD2P7WWfJKU0F1nu0k5pW4rvdb+BIqMm8ToluW/eeRmxCared5dD76lS04uL4UaNgpNA==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", + "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", "cpu": [ "arm64" ], @@ -968,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.41.1.tgz", - "integrity": "sha512-XZpeGB5TKEZWzIrj7sXr+BEaSgo/ma/kCgrZgL0oo5qdB1JlTzIYQKel/RmhT6vMAvOdM2teYlAaOGJpJ9lahg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", + "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", "cpu": [ "arm64" ], @@ -981,10 +893,24 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-loongarch64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.41.1.tgz", - "integrity": "sha512-bkCfDJ4qzWfFRCNt5RVV4DOw6KEgFTUZi2r2RuYhGWC8WhCA8lCAJhDeAmrM/fdiAH54m0mA0Vk2FGRPyzI+tw==", + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", + "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", + "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", "cpu": [ "loong64" ], @@ -995,10 +921,24 @@ "linux" ] }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.41.1.tgz", - "integrity": "sha512-3mr3Xm+gvMX+/8EKogIZSIEF0WUu0HL9di+YWlJpO8CQBnoLAEL/roTCxuLncEdgcfJcvA4UMOf+2dnjl4Ut1A==", + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", + "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-musl": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", + "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", "cpu": [ "ppc64" ], @@ -1010,9 +950,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.41.1.tgz", - "integrity": "sha512-3rwCIh6MQ1LGrvKJitQjZFuQnT2wxfU+ivhNBzmxXTXPllewOF7JR1s2vMX/tWtUYFgphygxjqMl76q4aMotGw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", + "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", "cpu": [ "riscv64" ], @@ -1024,9 +964,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.41.1.tgz", - "integrity": "sha512-LdIUOb3gvfmpkgFZuccNa2uYiqtgZAz3PTzjuM5bH3nvuy9ty6RGc/Q0+HDFrHrizJGVpjnTZ1yS5TNNjFlklw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", + "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", "cpu": [ "riscv64" ], @@ -1038,9 +978,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.41.1.tgz", - "integrity": "sha512-oIE6M8WC9ma6xYqjvPhzZYk6NbobIURvP/lEbh7FWplcMO6gn7MM2yHKA1eC/GvYwzNKK/1LYgqzdkZ8YFxR8g==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", + "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", "cpu": [ "s390x" ], @@ -1052,9 +992,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.41.1.tgz", - "integrity": "sha512-cWBOvayNvA+SyeQMp79BHPK8ws6sHSsYnK5zDcsC3Hsxr1dgTABKjMnMslPq1DvZIp6uO7kIWhiGwaTdR4Og9A==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", + "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", "cpu": [ "x64" ], @@ -1066,9 +1006,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.41.1.tgz", - "integrity": "sha512-y5CbN44M+pUCdGDlZFzGGBSKCA4A/J2ZH4edTYSSxFg7ce1Xt3GtydbVKWLlzL+INfFIZAEg1ZV6hh9+QQf9YQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", + "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", "cpu": [ "x64" ], @@ -1079,10 +1019,38 @@ "linux" ] }, + "node_modules/@rollup/rollup-openbsd-x64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", + "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", + "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.41.1.tgz", - "integrity": "sha512-lZkCxIrjlJlMt1dLO/FbpZbzt6J/A8p4DnqzSa4PWqPEUUUnzXLeki/iyPLfV0BmHItlYgHUqJe+3KiyydmiNQ==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", + "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", "cpu": [ "arm64" ], @@ -1094,9 +1062,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.41.1.tgz", - "integrity": "sha512-+psFT9+pIh2iuGsxFYYa/LhS5MFKmuivRsx9iPJWNSGbh2XVEjk90fmpUEjCnILPEPJnikAU6SFDiEUyOv90Pg==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", + "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", "cpu": [ "ia32" ], @@ -1107,10 +1075,24 @@ "win32" ] }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", + "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.41.1.tgz", - "integrity": "sha512-Wq2zpapRYLfi4aKxf2Xff0tN+7slj2d4R87WEzqw7ZLsVvO5zwYCIuEGSZYiK41+GlwUo1HiR+GdkLEJnCKTCw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", + "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", "cpu": [ "x64" ], @@ -1128,10 +1110,28 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/chai": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", + "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*", + "assertion-error": "^2.0.1" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", "dev": true, "license": "MIT" }, @@ -1150,9 +1150,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "22.15.27", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.15.27.tgz", - "integrity": "sha512-5fF+eu5mwihV2BeVtX5vijhdaZOfkQTATrePEaXTcKqI16LhJ7gi2/Vhd9OZM0UojcdmiOCVg5rrax+i1MdoQQ==", + "version": "22.19.11", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.11.tgz", + "integrity": "sha512-BH7YwL6rA93ReqeQS1c4bsPpcfOmJasG+Fkr6Y59q83f9M1WcBRHR2vM+P9eOisYRcN3ujQoiZY8uk5W+1WL8w==", "dev": true, "license": "MIT", "dependencies": { @@ -1160,21 +1160,20 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.33.0.tgz", - "integrity": "sha512-CACyQuqSHt7ma3Ns601xykeBK/rDeZa3w6IS6UtMQbixO5DWy+8TilKkviGDH6jtWCo8FGRKEK5cLLkPvEammQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", + "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/type-utils": "8.33.0", - "@typescript-eslint/utils": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", + "@eslint-community/regexpp": "^4.12.2", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/type-utils": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "ignore": "^7.0.5", "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1184,23 +1183,23 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.33.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "@typescript-eslint/parser": "^8.56.0", + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.33.0.tgz", - "integrity": "sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", + "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/typescript-estree": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", - "debug": "^4.3.4" + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1210,20 +1209,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.33.0.tgz", - "integrity": "sha512-d1hz0u9l6N+u/gcrk6s6gYdl7/+pp8yHheRTqP6X5hVDKALEaTn8WfGiit7G511yueBEL3OpOEpD+3/MBdoN+A==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", + "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.33.0", - "@typescript-eslint/types": "^8.33.0", - "debug": "^4.3.4" + "@typescript-eslint/tsconfig-utils": "^8.56.0", + "@typescript-eslint/types": "^8.56.0", + "debug": "^4.4.3" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1231,17 +1230,20 @@ "funding": { "type": "opencollective", "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.33.0.tgz", - "integrity": "sha512-LMi/oqrzpqxyO72ltP+dBSP6V0xiUb4saY7WLtxSfiNEBI8m321LLVFU9/QDJxjDQG9/tjSqKz/E3380TEqSTw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", + "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0" + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1252,9 +1254,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.33.0.tgz", - "integrity": "sha512-sTkETlbqhEoiFmGr1gsdq5HyVbSOF0145SYDJ/EQmXHtKViCaGvnyLqWFFHtEXoS0J1yU8Wyou2UGmgW88fEug==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", + "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", "dev": true, "license": "MIT", "engines": { @@ -1265,20 +1267,21 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.33.0.tgz", - "integrity": "sha512-lScnHNCBqL1QayuSrWeqAL5GmqNdVUQAAMTaCwdYEdWfIrSrOGzyLGRCHXcCixa5NK6i5l0AfSO2oBSjCjf4XQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", + "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/typescript-estree": "8.33.0", - "@typescript-eslint/utils": "8.33.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0", + "debug": "^4.4.3", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1288,14 +1291,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/types": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.33.0.tgz", - "integrity": "sha512-DKuXOKpM5IDT1FA2g9x9x1Ug81YuKrzf4mYX8FAVSNu5Wo/LELHWQyM1pQaDkI42bX15PWl0vNPt1uGiIFUOpg==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", + "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", "dev": true, "license": "MIT", "engines": { @@ -1307,22 +1310,21 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.33.0.tgz", - "integrity": "sha512-vegY4FQoB6jL97Tu/lWRsAiUUp8qJTqzAmENH2k59SJhw0Th1oszb9Idq/FyyONLuNqT1OADJPXfyUNOR8SzAQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", + "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.33.0", - "@typescript-eslint/tsconfig-utils": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/visitor-keys": "8.33.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" + "@typescript-eslint/project-service": "8.56.0", + "@typescript-eslint/tsconfig-utils": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/visitor-keys": "8.56.0", + "debug": "^4.4.3", + "minimatch": "^9.0.5", + "semver": "^7.7.3", + "tinyglobby": "^0.2.15", + "ts-api-utils": "^2.4.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1332,20 +1334,20 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/utils": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.33.0.tgz", - "integrity": "sha512-lPFuQaLA9aSNa7D5u2EpRiqdAUhzShwGg/nhpBlc4GR6kcTABttCuyjFs8BcEZ8VWrjCBof/bePhP3Q3fS+Yrw==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", + "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.33.0", - "@typescript-eslint/types": "8.33.0", - "@typescript-eslint/typescript-estree": "8.33.0" + "@eslint-community/eslint-utils": "^4.9.1", + "@typescript-eslint/scope-manager": "8.56.0", + "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1355,19 +1357,19 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.33.0.tgz", - "integrity": "sha512-7RW7CMYoskiz5OOGAWjJFxgb7c5UNjTG292gYhWeOAcFmYCtVCSqjqSBj5zMhxbXo2JOW95YYrUWJfU0zrpaGQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", + "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.33.0", - "eslint-visitor-keys": "^4.2.0" + "@typescript-eslint/types": "8.56.0", + "eslint-visitor-keys": "^5.0.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1378,30 +1380,34 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", + "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", "dev": true, "license": "Apache-2.0", "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + "node": "^20.19.0 || ^22.13.0 || >=24" }, "funding": { "url": "https://opencollective.com/eslint" } }, "node_modules/@vitest/eslint-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.2.1.tgz", - "integrity": "sha512-JQr1jdVcrsoS7Sdzn83h9sq4DvREf9Q/onTZbJCqTVlv/76qb+TZrLv/9VhjnjSMHweQH5FdpMDeCR6aDe2fgw==", + "version": "1.6.9", + "resolved": "https://registry.npmjs.org/@vitest/eslint-plugin/-/eslint-plugin-1.6.9.tgz", + "integrity": "sha512-9WfPx1OwJ19QLCSRLkqVO7//1WcWnK3fE/3fJhKMAmDe8+9G4rB47xCNIIeCq3FdEzkIoLTfDlwDlPBaUTMhow==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/utils": "^8.24.0" + "@typescript-eslint/scope-manager": "^8.55.0", + "@typescript-eslint/utils": "^8.55.0" + }, + "engines": { + "node": ">=18" }, "peerDependencies": { - "eslint": ">= 8.57.0", - "typescript": ">= 5.0.0", + "eslint": ">=8.57.0", + "typescript": ">=5.0.0", "vitest": "*" }, "peerDependenciesMeta": { @@ -1414,14 +1420,15 @@ } }, "node_modules/@vitest/expect": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.1.4.tgz", - "integrity": "sha512-xkD/ljeliyaClDYqHPNCiJ0plY5YIcM0OlRiZizLhlPmpXWpxnGMyTZXOHFhFeG7w9P5PBeL4IdtJ/HeQwTbQA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.4", - "@vitest/utils": "3.1.4", + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", "tinyrainbow": "^2.0.0" }, @@ -1430,13 +1437,13 @@ } }, "node_modules/@vitest/mocker": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.1.4.tgz", - "integrity": "sha512-8IJ3CvwtSw/EFXqWFL8aCMu+YyYXG2WUSrQbViOZkWTKTVicVwZ/YiEZDSqD00kX+v/+W+OnxhNWoeVKorHygA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/spy": "3.1.4", + "@vitest/spy": "3.2.4", "estree-walker": "^3.0.3", "magic-string": "^0.30.17" }, @@ -1445,7 +1452,7 @@ }, "peerDependencies": { "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "peerDependenciesMeta": { "msw": { @@ -1457,9 +1464,9 @@ } }, "node_modules/@vitest/pretty-format": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.1.4.tgz", - "integrity": "sha512-cqv9H9GvAEoTaoq+cYqUTCGscUjKqlJZC7PRwY5FMySVj5J+xOm1KQcCiYHJOEzOKRUhLH4R2pTwvFlWCEScsg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", "dev": true, "license": "MIT", "dependencies": { @@ -1470,27 +1477,28 @@ } }, "node_modules/@vitest/runner": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.1.4.tgz", - "integrity": "sha512-djTeF1/vt985I/wpKVFBMWUlk/I7mb5hmD5oP8K9ACRmVXgKTae3TUOtXAEBfslNKPzUQvnKhNd34nnRSYgLNQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/utils": "3.1.4", - "pathe": "^2.0.3" + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/snapshot": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.1.4.tgz", - "integrity": "sha512-JPHf68DvuO7vilmvwdPr9TS0SuuIzHvxeaCkxYcCD4jTk67XwL45ZhEHFKIuCm8CYstgI6LZ4XbwD6ANrwMpFg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.4", + "@vitest/pretty-format": "3.2.4", "magic-string": "^0.30.17", "pathe": "^2.0.3" }, @@ -1499,27 +1507,27 @@ } }, "node_modules/@vitest/spy": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.1.4.tgz", - "integrity": "sha512-Xg1bXhu+vtPXIodYN369M86K8shGLouNjoVI78g8iAq2rFoHFdajNvJJ5A/9bPMFcfQqdaCpOgWKEoMQg/s0Yg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", "dev": true, "license": "MIT", "dependencies": { - "tinyspy": "^3.0.2" + "tinyspy": "^4.0.3" }, "funding": { "url": "https://opencollective.com/vitest" } }, "node_modules/@vitest/utils": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.1.4.tgz", - "integrity": "sha512-yriMuO1cfFhmiGc8ataN51+9ooHRuURdfAZfwFd3usWynjzpLslZdYnRegTv32qdgtJTsj15FoeZe2g15fY1gg==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/pretty-format": "3.1.4", - "loupe": "^3.1.3", + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", "tinyrainbow": "^2.0.0" }, "funding": { @@ -1527,9 +1535,9 @@ } }, "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", "bin": { @@ -1566,19 +1574,6 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, "node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -1627,18 +1622,20 @@ } }, "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -1773,14 +1770,14 @@ } }, "node_modules/axios": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", - "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", + "version": "1.13.5", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.13.5.tgz", + "integrity": "sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==", "dev": true, "license": "MIT", "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", + "follow-redirects": "^1.15.11", + "form-data": "^4.0.5", "proxy-from-env": "^1.1.0" } }, @@ -1801,19 +1798,6 @@ "balanced-match": "^1.0.0" } }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/bundle-require": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz", @@ -1901,9 +1885,9 @@ } }, "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", + "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", "dev": true, "license": "MIT", "dependencies": { @@ -1914,7 +1898,7 @@ "pathval": "^2.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/chalk": { @@ -1935,9 +1919,9 @@ } }, "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", + "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", "dev": true, "license": "MIT", "engines": { @@ -2097,9 +2081,9 @@ } }, "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", "dev": true, "license": "MIT", "dependencies": { @@ -2205,24 +2189,10 @@ "node": ">= 0.4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "version": "1.24.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.1.tgz", + "integrity": "sha512-zHXBLhP+QehSSbsS9Pt23Gg964240DPd6QCf8WpkqEXxQ7fhdZzYsocOr5u7apWonsS5EjZDmTF+/slGMyasvw==", "dev": true, "license": "MIT", "dependencies": { @@ -2376,9 +2346,9 @@ } }, "node_modules/esbuild": { - "version": "0.25.5", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", - "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", + "version": "0.27.3", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.3.tgz", + "integrity": "sha512-8VwMnyGCONIs6cWue2IdpHxHnAjzxnw2Zr7MkVxB2vjmQ2ivqGFb4LEG3SMnv0Gb2F/G/2yA8zUaiL1gywDCCg==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -2389,31 +2359,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.5", - "@esbuild/android-arm": "0.25.5", - "@esbuild/android-arm64": "0.25.5", - "@esbuild/android-x64": "0.25.5", - "@esbuild/darwin-arm64": "0.25.5", - "@esbuild/darwin-x64": "0.25.5", - "@esbuild/freebsd-arm64": "0.25.5", - "@esbuild/freebsd-x64": "0.25.5", - "@esbuild/linux-arm": "0.25.5", - "@esbuild/linux-arm64": "0.25.5", - "@esbuild/linux-ia32": "0.25.5", - "@esbuild/linux-loong64": "0.25.5", - "@esbuild/linux-mips64el": "0.25.5", - "@esbuild/linux-ppc64": "0.25.5", - "@esbuild/linux-riscv64": "0.25.5", - "@esbuild/linux-s390x": "0.25.5", - "@esbuild/linux-x64": "0.25.5", - "@esbuild/netbsd-arm64": "0.25.5", - "@esbuild/netbsd-x64": "0.25.5", - "@esbuild/openbsd-arm64": "0.25.5", - "@esbuild/openbsd-x64": "0.25.5", - "@esbuild/sunos-x64": "0.25.5", - "@esbuild/win32-arm64": "0.25.5", - "@esbuild/win32-ia32": "0.25.5", - "@esbuild/win32-x64": "0.25.5" + "@esbuild/aix-ppc64": "0.27.3", + "@esbuild/android-arm": "0.27.3", + "@esbuild/android-arm64": "0.27.3", + "@esbuild/android-x64": "0.27.3", + "@esbuild/darwin-arm64": "0.27.3", + "@esbuild/darwin-x64": "0.27.3", + "@esbuild/freebsd-arm64": "0.27.3", + "@esbuild/freebsd-x64": "0.27.3", + "@esbuild/linux-arm": "0.27.3", + "@esbuild/linux-arm64": "0.27.3", + "@esbuild/linux-ia32": "0.27.3", + "@esbuild/linux-loong64": "0.27.3", + "@esbuild/linux-mips64el": "0.27.3", + "@esbuild/linux-ppc64": "0.27.3", + "@esbuild/linux-riscv64": "0.27.3", + "@esbuild/linux-s390x": "0.27.3", + "@esbuild/linux-x64": "0.27.3", + "@esbuild/netbsd-arm64": "0.27.3", + "@esbuild/netbsd-x64": "0.27.3", + "@esbuild/openbsd-arm64": "0.27.3", + "@esbuild/openbsd-x64": "0.27.3", + "@esbuild/openharmony-arm64": "0.27.3", + "@esbuild/sunos-x64": "0.27.3", + "@esbuild/win32-arm64": "0.27.3", + "@esbuild/win32-ia32": "0.27.3", + "@esbuild/win32-x64": "0.27.3" } }, "node_modules/escape-string-regexp": { @@ -2430,33 +2401,32 @@ } }, "node_modules/eslint": { - "version": "9.27.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.27.0.tgz", - "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", + "version": "9.39.2", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", + "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", "dev": true, "license": "MIT", "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.20.0", - "@eslint/config-helpers": "^0.2.1", - "@eslint/core": "^0.14.0", + "@eslint/config-array": "^0.21.1", + "@eslint/config-helpers": "^0.4.2", + "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.27.0", - "@eslint/plugin-kit": "^0.3.1", + "@eslint/js": "9.39.2", + "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", "@humanwhocodes/retry": "^0.4.2", "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", "ajv": "^6.12.4", "chalk": "^4.0.0", "cross-spawn": "^7.0.6", "debug": "^4.3.2", "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.3.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", "esquery": "^1.5.0", "esutils": "^2.0.2", "fast-deep-equal": "^3.1.3", @@ -2513,9 +2483,9 @@ } }, "node_modules/eslint-module-utils": { - "version": "2.12.0", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.0.tgz", - "integrity": "sha512-wALZ0HFoytlyh/1+4wuZ9FJCD/leWHQzzrxJ8+rebyReSLk7LApMyd3WJaLVoN+D5+WIdJyDK1c6JnE65V4Zyg==", + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", "dev": true, "license": "MIT", "dependencies": { @@ -2541,30 +2511,30 @@ } }, "node_modules/eslint-plugin-import": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.31.0.tgz", - "integrity": "sha512-ixmkI62Rbc2/w8Vfxyh1jQRTdRTF52VxwRVHl/ykPAmqG+Nb7/kNn+byLP0LxPgI7zWA16Jt82SybJInmMia3A==", + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", "dependencies": { "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.8", - "array.prototype.findlastindex": "^1.2.5", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", "debug": "^3.2.7", "doctrine": "^2.1.0", "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.0", + "eslint-module-utils": "^2.12.1", "hasown": "^2.0.2", - "is-core-module": "^2.15.1", + "is-core-module": "^2.16.1", "is-glob": "^4.0.3", "minimatch": "^3.1.2", "object.fromentries": "^2.0.8", "object.groupby": "^1.0.3", - "object.values": "^1.2.0", + "object.values": "^1.2.1", "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.8", + "string.prototype.trimend": "^1.0.9", "tsconfig-paths": "^3.15.0" }, "engines": { @@ -2619,9 +2589,9 @@ } }, "node_modules/eslint-scope": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.3.0.tgz", - "integrity": "sha512-pUNxi75F8MJ/GdeKtVLSbYg4ZI34J6C0C7sbL4YOp2exGwen7ZsuBqKzUhXd0qMQ362yET3z+uPwKeg/0C2XCQ==", + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -2660,9 +2630,9 @@ } }, "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2696,15 +2666,15 @@ } }, "node_modules/espree": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz", - "integrity": "sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==", + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { - "acorn": "^8.14.0", + "acorn": "^8.15.0", "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.0" + "eslint-visitor-keys": "^4.2.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2714,9 +2684,9 @@ } }, "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2727,9 +2697,9 @@ } }, "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", + "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", "dev": true, "license": "BSD-3-Clause", "dependencies": { @@ -2783,9 +2753,9 @@ } }, "node_modules/expect-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", - "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", + "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -2799,36 +2769,6 @@ "dev": true, "license": "MIT" }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -2843,14 +2783,22 @@ "dev": true, "license": "MIT" }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } } }, "node_modules/file-entry-cache": { @@ -2866,19 +2814,6 @@ "node": ">=16.0.0" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "license": "MIT", - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2930,9 +2865,9 @@ "license": "ISC" }, "node_modules/follow-redirects": { - "version": "1.15.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", - "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", "dev": true, "funding": [ { @@ -2966,27 +2901,10 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", + "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", "dev": true, "license": "MIT", "dependencies": { @@ -3056,13 +2974,23 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "node_modules/generator-function": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generator-function/-/generator-function-2.0.1.tgz", + "integrity": "sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==", "dev": true, "license": "MIT", - "dependencies": { + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { "call-bind-apply-helpers": "^1.0.2", "es-define-property": "^1.0.1", "es-errors": "^1.3.0", @@ -3113,27 +3041,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { - "version": "10.4.5", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", - "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", @@ -3190,13 +3097,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true, - "license": "MIT" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -3292,9 +3192,9 @@ } }, "node_modules/ignore": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.4.tgz", - "integrity": "sha512-gJzzk+PQNznz8ysRrC0aOkBNVRBDtE1n53IqyqEf3PXrYwomFs5q4pGMizBMJF+ykh03insJ27hB8gSrD2Hn8A==", + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", "dev": true, "license": "MIT", "engines": { @@ -3504,25 +3404,16 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.2.tgz", + "integrity": "sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==", "dev": true, "license": "MIT", "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", + "call-bound": "^1.0.4", + "generator-function": "^2.0.0", + "get-proto": "^1.0.1", "has-tostringtag": "^1.0.2", "safe-regex-test": "^1.1.0" }, @@ -3572,16 +3463,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } - }, "node_modules/is-number-object": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", @@ -3758,22 +3639,6 @@ "dev": true, "license": "ISC" }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, "node_modules/joycon": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", @@ -3784,10 +3649,17 @@ "node": ">=10" } }, + "node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -3908,35 +3780,21 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "license": "MIT" - }, "node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", + "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", "dev": true, "license": "MIT" }, - "node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "version": "0.30.21", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", + "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", "dev": true, "license": "MIT", "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" + "@jridgewell/sourcemap-codec": "^1.5.5" } }, "node_modules/math-intrinsics": { @@ -3949,30 +3807,6 @@ "node": ">= 0.4" } }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "license": "MIT", - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, "node_modules/mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -4022,27 +3856,17 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.8.0.tgz", + "integrity": "sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==", "dev": true, "license": "MIT", "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" + "acorn": "^8.15.0", + "pathe": "^2.0.3", + "pkg-types": "^1.3.1", + "ufo": "^1.6.1" } }, "node_modules/ms": { @@ -4265,13 +4089,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -4312,23 +4129,6 @@ "dev": true, "license": "MIT" }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", @@ -4337,9 +4137,9 @@ "license": "MIT" }, "node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", "dev": true, "license": "MIT", "engines": { @@ -4354,13 +4154,13 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", "engines": { - "node": ">=8.6" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/jonschlinkert" @@ -4399,9 +4199,9 @@ } }, "node_modules/postcss": { - "version": "8.5.4", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.4.tgz", - "integrity": "sha512-QSa9EBe+uwlGTFmHsPKokv3B/oEMQZxfqW0QqNCyhpa6mB1afzulwn8hihglqAb2pOw+BJgNlmXQ8la2VeHB7w==", + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", "dev": true, "funding": [ { @@ -4513,27 +4313,6 @@ "node": ">=6" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -4593,13 +4372,13 @@ } }, "node_modules/resolve": { - "version": "1.22.10", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", - "integrity": "sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w==", + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.16.0", + "is-core-module": "^2.16.1", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -4623,25 +4402,14 @@ "node": ">=4" } }, - "node_modules/reusify": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", - "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, - "license": "MIT", - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, "node_modules/rollup": { - "version": "4.41.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.41.1.tgz", - "integrity": "sha512-cPmwD3FnFv8rKMBc1MxWCwVQFxwf1JEmSX3iQXrRVVG15zerAIXRjMFVWnd5Q5QvgKF7Aj+5ykXFhUl+QGnyOw==", + "version": "4.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", + "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", "dev": true, "license": "MIT", "dependencies": { - "@types/estree": "1.0.7" + "@types/estree": "1.0.8" }, "bin": { "rollup": "dist/bin/rollup" @@ -4651,53 +4419,34 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.41.1", - "@rollup/rollup-android-arm64": "4.41.1", - "@rollup/rollup-darwin-arm64": "4.41.1", - "@rollup/rollup-darwin-x64": "4.41.1", - "@rollup/rollup-freebsd-arm64": "4.41.1", - "@rollup/rollup-freebsd-x64": "4.41.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.41.1", - "@rollup/rollup-linux-arm-musleabihf": "4.41.1", - "@rollup/rollup-linux-arm64-gnu": "4.41.1", - "@rollup/rollup-linux-arm64-musl": "4.41.1", - "@rollup/rollup-linux-loongarch64-gnu": "4.41.1", - "@rollup/rollup-linux-powerpc64le-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-gnu": "4.41.1", - "@rollup/rollup-linux-riscv64-musl": "4.41.1", - "@rollup/rollup-linux-s390x-gnu": "4.41.1", - "@rollup/rollup-linux-x64-gnu": "4.41.1", - "@rollup/rollup-linux-x64-musl": "4.41.1", - "@rollup/rollup-win32-arm64-msvc": "4.41.1", - "@rollup/rollup-win32-ia32-msvc": "4.41.1", - "@rollup/rollup-win32-x64-msvc": "4.41.1", + "@rollup/rollup-android-arm-eabi": "4.57.1", + "@rollup/rollup-android-arm64": "4.57.1", + "@rollup/rollup-darwin-arm64": "4.57.1", + "@rollup/rollup-darwin-x64": "4.57.1", + "@rollup/rollup-freebsd-arm64": "4.57.1", + "@rollup/rollup-freebsd-x64": "4.57.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", + "@rollup/rollup-linux-arm-musleabihf": "4.57.1", + "@rollup/rollup-linux-arm64-gnu": "4.57.1", + "@rollup/rollup-linux-arm64-musl": "4.57.1", + "@rollup/rollup-linux-loong64-gnu": "4.57.1", + "@rollup/rollup-linux-loong64-musl": "4.57.1", + "@rollup/rollup-linux-ppc64-gnu": "4.57.1", + "@rollup/rollup-linux-ppc64-musl": "4.57.1", + "@rollup/rollup-linux-riscv64-gnu": "4.57.1", + "@rollup/rollup-linux-riscv64-musl": "4.57.1", + "@rollup/rollup-linux-s390x-gnu": "4.57.1", + "@rollup/rollup-linux-x64-gnu": "4.57.1", + "@rollup/rollup-linux-x64-musl": "4.57.1", + "@rollup/rollup-openbsd-x64": "4.57.1", + "@rollup/rollup-openharmony-arm64": "4.57.1", + "@rollup/rollup-win32-arm64-msvc": "4.57.1", + "@rollup/rollup-win32-ia32-msvc": "4.57.1", + "@rollup/rollup-win32-x64-gnu": "4.57.1", + "@rollup/rollup-win32-x64-msvc": "4.57.1", "fsevents": "~2.3.2" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, "node_modules/safe-array-concat": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", @@ -4754,9 +4503,9 @@ } }, "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "version": "7.7.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", + "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", "dev": true, "license": "ISC", "bin": { @@ -4921,30 +4670,14 @@ "dev": true, "license": "ISC" }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "version": "0.7.6", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.6.tgz", + "integrity": "sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==", "dev": true, "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, "engines": { - "node": ">= 8" + "node": ">= 12" } }, "node_modules/source-map-js": { @@ -4965,9 +4698,9 @@ "license": "MIT" }, "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", + "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", "dev": true, "license": "MIT" }, @@ -4985,70 +4718,6 @@ "node": ">= 0.4" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/string.prototype.trim": { "version": "1.2.10", "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", @@ -5108,46 +4777,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -5171,19 +4800,32 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-literal": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", + "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/sucrase": { - "version": "3.35.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", - "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", + "version": "3.35.1", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.1.tgz", + "integrity": "sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==", "dev": true, "license": "MIT", "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", + "tinyglobby": "^0.2.11", "ts-interface-checker": "^0.1.9" }, "bin": { @@ -5258,14 +4900,14 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", "dev": true, "license": "MIT", "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" + "fdir": "^6.5.0", + "picomatch": "^4.0.3" }, "engines": { "node": ">=12.0.0" @@ -5274,38 +4916,10 @@ "url": "https://github.com/sponsors/SuperchupuDev" } }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/tinypool": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.0.2.tgz", - "integrity": "sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", "dev": true, "license": "MIT", "engines": { @@ -5323,38 +4937,15 @@ } }, "node_modules/tinyspy": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-3.0.2.tgz", - "integrity": "sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", + "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", "dev": true, "license": "MIT", "engines": { "node": ">=14.0.0" } }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -5366,9 +4957,9 @@ } }, "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.4.0.tgz", + "integrity": "sha512-3TaVTaAv2gTiMB35i3FiGJaRfwb3Pyn/j3m/bfAvGe8FB7CF6u+LMYqYlDh7reQf7UNvoTvdfAqHGmPGOSsPmA==", "dev": true, "license": "MIT", "engines": { @@ -5399,9 +4990,9 @@ } }, "node_modules/tsup": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.0.tgz", - "integrity": "sha512-VmBp77lWNQq6PfuMqCHD3xWl22vEoWsKajkF8t+yMBawlUS8JzEI+vOVMeuNZIuMML8qXRizFKi9oD5glKQVcQ==", + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-8.5.1.tgz", + "integrity": "sha512-xtgkqwdhpKWr3tKPmCkvYmS9xnQK3m3XgxZHwSUjvfTjp7YfXe5tT3GgWi0F2N+ZSMsOeWeZFh7ZZFg5iPhing==", "dev": true, "license": "MIT", "dependencies": { @@ -5410,14 +5001,14 @@ "chokidar": "^4.0.3", "consola": "^3.4.0", "debug": "^4.4.0", - "esbuild": "^0.25.0", + "esbuild": "^0.27.0", "fix-dts-default-cjs-exports": "^1.0.0", "joycon": "^3.1.1", "picocolors": "^1.1.1", "postcss-load-config": "^6.0.1", "resolve-from": "^5.0.0", "rollup": "^4.34.8", - "source-map": "0.8.0-beta.0", + "source-map": "^0.7.6", "sucrase": "^3.35.0", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.11", @@ -5553,9 +5144,9 @@ } }, "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz", + "integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5567,15 +5158,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.33.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.33.0.tgz", - "integrity": "sha512-5YmNhF24ylCsvdNW2oJwMzTbaeO4bg90KeGtMjUw0AGtHksgEPLRTUil+coHwCfiu4QjVJFnjp94DmU6zV7DhQ==", + "version": "8.56.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", + "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.33.0", - "@typescript-eslint/parser": "8.33.0", - "@typescript-eslint/utils": "8.33.0" + "@typescript-eslint/eslint-plugin": "8.56.0", + "@typescript-eslint/parser": "8.56.0", + "@typescript-eslint/typescript-estree": "8.56.0", + "@typescript-eslint/utils": "8.56.0" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -5585,14 +5177,14 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" + "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", + "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==", + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.3.tgz", + "integrity": "sha512-yDJTmhydvl5lJzBmy/hyOAA0d+aqCBuwl818haVdYCRrWV84o7YyeVm4QlVHStqNrrJSTb6jKuFAVqAFsr+K3Q==", "dev": true, "license": "MIT" }, @@ -5633,24 +5225,24 @@ } }, "node_modules/vite": { - "version": "6.3.5", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", - "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", + "version": "7.3.1", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.1.tgz", + "integrity": "sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==", "dev": true, "license": "MIT", "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.4.4", - "picomatch": "^4.0.2", - "postcss": "^8.5.3", - "rollup": "^4.34.9", - "tinyglobby": "^0.2.13" + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" }, "bin": { "vite": "bin/vite.js" }, "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + "node": "^20.19.0 || >=22.12.0" }, "funding": { "url": "https://github.com/vitejs/vite?sponsor=1" @@ -5659,14 +5251,14 @@ "fsevents": "~2.3.3" }, "peerDependencies": { - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@types/node": "^20.19.0 || >=22.12.0", "jiti": ">=1.21.0", - "less": "*", + "less": "^4.0.0", "lightningcss": "^1.21.0", - "sass": "*", - "sass-embedded": "*", - "stylus": "*", - "sugarss": "*", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", "terser": "^5.16.0", "tsx": "^4.8.1", "yaml": "^2.4.2" @@ -5708,17 +5300,17 @@ } }, "node_modules/vite-node": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.1.4.tgz", - "integrity": "sha512-6enNwYnpyDo4hEgytbmc6mYWHXDHYEn0D1/rw4Q+tnHUGtKTJsn8T1YkX6Q18wI5LCrS8CTYlBaiCqxOy2kvUA==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", "dev": true, "license": "MIT", "dependencies": { "cac": "^6.7.14", - "debug": "^4.4.0", + "debug": "^4.4.1", "es-module-lexer": "^1.7.0", "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0" + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" }, "bin": { "vite-node": "vite-node.mjs" @@ -5730,61 +5322,35 @@ "url": "https://opencollective.com/vitest" } }, - "node_modules/vite/node_modules/fdir": { - "version": "6.4.5", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.5.tgz", - "integrity": "sha512-4BG7puHpVsIYxZUbiUE3RqGloLaSSwzYie5jvasC4LWuBWzZawynvYouhjbQKw2JuIGYdm0DzIxl8iVidKlUEw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", - "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, "node_modules/vitest": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.1.4.tgz", - "integrity": "sha512-Ta56rT7uWxCSJXlBtKgIlApJnT6e6IGmTYxYcmxjJ4ujuZDI59GUQgVDObXXJujOmPDBYXHK1qmaGtneu6TNIQ==", + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", "dev": true, "license": "MIT", "dependencies": { - "@vitest/expect": "3.1.4", - "@vitest/mocker": "3.1.4", - "@vitest/pretty-format": "^3.1.4", - "@vitest/runner": "3.1.4", - "@vitest/snapshot": "3.1.4", - "@vitest/spy": "3.1.4", - "@vitest/utils": "3.1.4", + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", "chai": "^5.2.0", - "debug": "^4.4.0", + "debug": "^4.4.1", "expect-type": "^1.2.1", "magic-string": "^0.30.17", "pathe": "^2.0.3", + "picomatch": "^4.0.2", "std-env": "^3.9.0", "tinybench": "^2.9.0", "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.13", - "tinypool": "^1.0.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0", - "vite-node": "3.1.4", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", "why-is-node-running": "^2.3.0" }, "bin": { @@ -5800,8 +5366,8 @@ "@edge-runtime/vm": "*", "@types/debug": "^4.1.12", "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.1.4", - "@vitest/ui": "3.1.4", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", "happy-dom": "*", "jsdom": "*" }, @@ -5829,25 +5395,6 @@ } } }, - "node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -5932,9 +5479,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "version": "1.1.20", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.20.tgz", + "integrity": "sha512-LYfpUkmqwl0h9A2HL09Mms427Q1RZWuOHsukfVcKRq9q95iQxdw0ix1JQrqbcDR9PH1QDwf5Qo8OZb5lksZ8Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -5980,101 +5527,6 @@ "node": ">=0.10.0" } }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 6018b7d..bae6832 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,7 @@ "@typescript-eslint/eslint-plugin": "^8.29.1", "@typescript-eslint/parser": "^8.29.1", "@vitest/eslint-plugin": "^1.1.43", - "axios": "^1.9.0", + "axios": "^1.13.0", "eslint": "^9.24.0", "eslint-plugin-import": "^2.31.0", "prettier": "3.5.3", diff --git a/test/specs/converters/itemToLicense.spec.ts b/test/specs/converters/itemToLicense.spec.ts index 3f1df65..4e8d639 100644 --- a/test/specs/converters/itemToLicense.spec.ts +++ b/test/specs/converters/itemToLicense.spec.ts @@ -7,9 +7,9 @@ import itemToLicense from '@/converters/itemToLicense'; import License from '@/entities/License'; // types +import { TimeVolumePeriodValues } from "@/types"; import { Item } from '@/types/api/response'; import { LicenseProps } from '@/types/entities/License'; -import { TimeVolumePeriodValues } from "@/types"; describe('itemToLicense converter', () => { it('should correctly convert item to License', () => { From ae776055b5b61fb23fe6e73b157b12733105984e Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Wed, 25 Feb 2026 14:13:31 +0200 Subject: [PATCH 5/6] - dist - update dependencies --- dist/index.global.js | 12 +- dist/index.global.js.map | 2 +- dist/index.js | 2 +- dist/index.js.map | 2 +- dist/index.mjs | 2 +- dist/index.mjs.map | 2 +- package-lock.json | 460 +++++++++++++++++++++------------------ 7 files changed, 258 insertions(+), 224 deletions(-) diff --git a/dist/index.global.js b/dist/index.global.js index 8bbc79c..b9596f1 100644 --- a/dist/index.global.js +++ b/dist/index.global.js @@ -1,7 +1,7 @@ -"use strict";var NetLicensing=(()=>{var At=Object.defineProperty;var Ko=Object.getOwnPropertyDescriptor;var Jo=Object.getOwnPropertyNames;var Go=Object.prototype.hasOwnProperty;var Pn=(n,e)=>{for(var o in e)At(n,o,{get:e[o],enumerable:!0})},Wo=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of Jo(e))!Go.call(n,r)&&r!==o&&At(n,r,{get:()=>e[r],enumerable:!(t=Ko(e,r))||t.enumerable});return n};var Xo=n=>Wo(At({},"__esModule",{value:!0}),n);var zs={};Pn(zs,{ApiKeyRole:()=>hn,Bundle:()=>Ve,BundleService:()=>Mo,Constants:()=>P,Context:()=>zo,Country:()=>He,License:()=>re,LicenseService:()=>Uo,LicenseTemplate:()=>Ye,LicenseTemplateService:()=>jo,LicenseTransactionJoin:()=>Pt,LicenseType:()=>ge,Licensee:()=>ze,LicenseeSecretMode:()=>Be,LicenseeService:()=>_o,LicensingModel:()=>yn,NlicError:()=>k,NodeSecretMode:()=>En,Notification:()=>Ke,NotificationEvent:()=>Te,NotificationProtocol:()=>Pe,NotificationService:()=>ko,Page:()=>x,PaymentMethod:()=>Je,PaymentMethodEnum:()=>Dn,PaymentMethodService:()=>Bo,Product:()=>Ge,ProductDiscount:()=>ft,ProductModule:()=>gt,ProductModuleService:()=>Fo,ProductService:()=>qo,SecurityMode:()=>q,Service:()=>f,TimeVolumePeriod:()=>Fe,Token:()=>Tt,TokenService:()=>Vo,TokenType:()=>he,Transaction:()=>Ae,TransactionService:()=>Ho,TransactionSource:()=>qe,TransactionStatus:()=>ye,UtilityService:()=>$o,ValidationParameters:()=>Yo,ValidationResults:()=>Dt,defineEntity:()=>v,ensureNotEmpty:()=>E,ensureNotNull:()=>N,filterDecode:()=>wo,filterEncode:()=>S,isDefined:()=>cn,isValid:()=>we,itemToBundle:()=>G,itemToCountry:()=>$e,itemToLicense:()=>z,itemToLicenseTemplate:()=>X,itemToLicensee:()=>W,itemToNotification:()=>Q,itemToObject:()=>R,itemToPaymentMethod:()=>se,itemToProduct:()=>ee,itemToProductModule:()=>te,itemToToken:()=>pe,itemToTransaction:()=>ne,serialize:()=>C});var Qo=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Be=Qo;var Zo=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),ge=Zo;var er=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Te=er;var tr=Object.freeze({WEBHOOK:"WEBHOOK"}),Pe=tr;var nr=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),q=nr;var or=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),Fe=or;var rr=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),he=rr;var sr=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),qe=sr;var ir=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),ye=ir;var P={LicenseeSecretMode:Be,LicenseType:ge,NotificationEvent:Te,NotificationProtocol:Pe,SecurityMode:q,TimeVolumePeriod:Fe,TokenType:he,TransactionSource:qe,TransactionStatus:ye,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:ge},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:he},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:Pe,Event:Te},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:ye},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ar=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),hn=ar;var cr=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),yn=cr;var ur=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),En=ur;var dr=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),Dn=dr;var mr=n=>{try{return JSON.parse(n)}catch{return n}},pr=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=mr(t)}),e},lr=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(bn(o))}),e},bn=n=>n?{...pr(n.property),...lr(n.list)}:{},R=bn;var wt=(n,e)=>Object.hasOwn(n,e),p=(n,e,o)=>{n[e]=o},m=(n,e,o)=>wt(n,e)?n[e]:o;var C=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([r,s])=>{if(!t.includes(r)&&typeof s!="function")if(s===void 0)o[r]="";else if(typeof s=="string")o[r]=s;else if(s instanceof Date)o[r]=s.toISOString();else if(typeof s!="object"||s===null)o[r]=String(s);else try{o[r]=JSON.stringify(s)}catch{o[r]=String(s)}}),o};var fr=function(n,e,o={},t){let r={set:[],get:[]};t?.get&&r.get.push(t.get),t?.set&&r.set.push(t.set);let s={set(i,a){p(n,i,a)},get(i,a){return m(n,i,a)},has(i){return wt(n,i)},setProperty(i,a){this.set(i,a)},addProperty(i,a){this.set(i,a)},getProperty(i,a){return this.get(i,a)},hasProperty(i){return this.has(i)},setProperties(i){Object.entries(i).forEach(([a,d])=>{this.set(a,d)})},serialize(){return C(n)}};return new Proxy(n,{get(i,a,d){return Object.hasOwn(e,a)?e[a]:Object.hasOwn(s,a)?s[a]:(r.get.forEach(u=>{u(i,a,d)}),Reflect.get(i,a,d))},set(i,a,d,u){return r.set.forEach(l=>{l(i,a,d,u)}),Reflect.set(i,a,d,u)},getPrototypeOf(){return o.prototype||null}})},v=fr;var Nn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setLicenseTemplateNumbers(t){p(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return m(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:r=[]}=e;r.splice(r.indexOf(t),1),e.licenseTemplateNumbers=r},getStaleLicenseTemplateNumbers(t){return m(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),C({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},Nn)},Ve=Nn;var G=n=>{let e=R(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Ve(e)};var Rn=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return v(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Rn)},He=Rn;var $e=n=>He(R(n));var vn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setHidden(t){p(e,"hidden",t)},getHidden(t){return m(e,"hidden",t)},setLicenseeNumber(t){p(e,"licenseeNumber",t)},getLicenseeNumber(t){return m(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){p(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return m(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){p(e,"productModuleNumber",t)},getProductModuleNumber(t){return m(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},vn)},re=vn;var z=n=>{let e=R(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),re(e)};var xn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setMarkedForTransfer(t){p(e,"markedForTransfer",t)},getMarkedForTransfer(t){return m(e,"markedForTransfer",t)},serialize(){return C(e,{ignore:["inUse"]})}},xn)},ze=xn;var W=n=>ze(R(n));var In=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setLicenseType(t){p(e,"licenseType",t)},getLicenseType(t){return m(e,"licenseType",t)},setPrice(t){p(e,"price",t)},getPrice(t){return m(e,"price",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setAutomatic(t){p(e,"automatic",t)},getAutomatic(t){return m(e,"automatic",t)},setHidden(t){p(e,"hidden",t)},getHidden(t){return m(e,"hidden",t)},setHideLicenses(t){p(e,"hideLicenses",t)},getHideLicenses(t){return m(e,"hideLicenses",t)},setProductModuleNumber(t){p(e,"productModuleNumber",t)},getProductModuleNumber(t){return m(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},In)},Ye=In;var X=n=>Ye(R(n));var Sn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setProtocol(t){p(e,"protocol",t)},getProtocol(t){return m(e,"protocol",t)},setEvents(t){p(e,"events",t)},getEvents(t){return m(e,"events",t)},addEvent(t){let r=this.getEvents([]);r.push(t),this.setEvents(r)},setPayload(t){p(e,"payload",t)},getPayload(t){return m(e,"payload",t)},setEndpoint(t){p(e,"endpoint",t)},getEndpoint(t){return m(e,"endpoint",t)},serialize(){let t=C(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},Sn)},Ke=Sn;var Q=n=>{let e=R(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),Ke(e)};var Ln=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)}},Ln)},Je=Ln;var se=n=>Je(R(n));var Cn=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setVersion(t){p(e,"version",t)},getVersion(t){return m(e,"version",t)},setDescription(t){p(e,"description",t)},getDescription(t){return m(e,"description",t)},setLicensingInfo(t){p(e,"licensingInfo",t)},getLicensingInfo(t){return m(e,"licensingInfo",t)},setLicenseeAutoCreate(t){p(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return m(e,"licenseeAutoCreate",t)},setDiscounts(t){p(e,"discounts",t)},getDiscounts(t){return m(e,"discounts",t)},addDiscount(t){let r=this.getDiscounts([]);r.push(t),this.setDiscounts(r)},removeDiscount(t){let r=this.getDiscounts();Array.isArray(r)&&r.length>0&&(r.splice(r.indexOf(t),1),this.setDiscounts(r))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=C(e,{ignore:["discounts","inUse"]}),r=this.getDiscounts();return r&&(t.discount=r.length>0?r.map(s=>s.toString()):""),t}},Cn)},Ge=Cn;function Ee(n,e){return function(){return n.apply(e,arguments)}}var{toString:gr}=Object.prototype,{getPrototypeOf:Mt}=Object,{iterator:Xe,toStringTag:wn}=Symbol,Qe=(n=>e=>{let o=gr.call(e);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),B=n=>(n=n.toLowerCase(),e=>Qe(e)===n),Ze=n=>e=>typeof e===n,{isArray:ie}=Array,De=Ze("undefined");function Tr(n){return n!==null&&!De(n)&&n.constructor!==null&&!De(n.constructor)&&j(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}var On=B("ArrayBuffer");function Pr(n){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(n):e=n&&n.buffer&&On(n.buffer),e}var hr=Ze("string"),j=Ze("function"),Mn=Ze("number"),et=n=>n!==null&&typeof n=="object",yr=n=>n===!0||n===!1,We=n=>{if(Qe(n)!=="object")return!1;let e=Mt(n);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(wn in n)&&!(Xe in n)},Er=B("Date"),Dr=B("File"),br=B("Blob"),Nr=B("FileList"),Rr=n=>et(n)&&j(n.pipe),vr=n=>{let e;return n&&(typeof FormData=="function"&&n instanceof FormData||j(n.append)&&((e=Qe(n))==="formdata"||e==="object"&&j(n.toString)&&n.toString()==="[object FormData]"))},xr=B("URLSearchParams"),[Ir,Sr,Lr,Cr]=["ReadableStream","Request","Response","Headers"].map(B),Ar=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function be(n,e,{allOwnKeys:o=!1}={}){if(n===null||typeof n>"u")return;let t,r;if(typeof n!="object"&&(n=[n]),ie(n))for(t=0,r=n.length;t0;)if(r=o[t],e===r.toLowerCase())return r;return null}var Z=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Un=n=>!De(n)&&n!==Z;function Ot(){let{caseless:n}=Un(this)&&this||{},e={},o=(t,r)=>{let s=n&&_n(e,r)||r;We(e[s])&&We(t)?e[s]=Ot(e[s],t):We(t)?e[s]=Ot({},t):ie(t)?e[s]=t.slice():e[s]=t};for(let t=0,r=arguments.length;t(be(e,(r,s)=>{o&&j(r)?n[s]=Ee(r,o):n[s]=r},{allOwnKeys:t}),n),Or=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),Mr=(n,e,o,t)=>{n.prototype=Object.create(e.prototype,t),n.prototype.constructor=n,Object.defineProperty(n,"super",{value:e.prototype}),o&&Object.assign(n.prototype,o)},_r=(n,e,o,t)=>{let r,s,i,a={};if(e=e||{},n==null)return e;do{for(r=Object.getOwnPropertyNames(n),s=r.length;s-- >0;)i=r[s],(!t||t(i,n,e))&&!a[i]&&(e[i]=n[i],a[i]=!0);n=o!==!1&&Mt(n)}while(n&&(!o||o(n,e))&&n!==Object.prototype);return e},Ur=(n,e,o)=>{n=String(n),(o===void 0||o>n.length)&&(o=n.length),o-=e.length;let t=n.indexOf(e,o);return t!==-1&&t===o},jr=n=>{if(!n)return null;if(ie(n))return n;let e=n.length;if(!Mn(e))return null;let o=new Array(e);for(;e-- >0;)o[e]=n[e];return o},kr=(n=>e=>n&&e instanceof n)(typeof Uint8Array<"u"&&Mt(Uint8Array)),Br=(n,e)=>{let t=(n&&n[Xe]).call(n),r;for(;(r=t.next())&&!r.done;){let s=r.value;e.call(n,s[0],s[1])}},Fr=(n,e)=>{let o,t=[];for(;(o=n.exec(e))!==null;)t.push(o);return t},qr=B("HTMLFormElement"),Vr=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,t,r){return t.toUpperCase()+r}),An=(({hasOwnProperty:n})=>(e,o)=>n.call(e,o))(Object.prototype),Hr=B("RegExp"),jn=(n,e)=>{let o=Object.getOwnPropertyDescriptors(n),t={};be(o,(r,s)=>{let i;(i=e(r,s,n))!==!1&&(t[s]=i||r)}),Object.defineProperties(n,t)},$r=n=>{jn(n,(e,o)=>{if(j(n)&&["arguments","caller","callee"].indexOf(o)!==-1)return!1;let t=n[o];if(j(t)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},zr=(n,e)=>{let o={},t=r=>{r.forEach(s=>{o[s]=!0})};return ie(n)?t(n):t(String(n).split(e)),o},Yr=()=>{},Kr=(n,e)=>n!=null&&Number.isFinite(n=+n)?n:e;function Jr(n){return!!(n&&j(n.append)&&n[wn]==="FormData"&&n[Xe])}var Gr=n=>{let e=new Array(10),o=(t,r)=>{if(et(t)){if(e.indexOf(t)>=0)return;if(!("toJSON"in t)){e[r]=t;let s=ie(t)?[]:{};return be(t,(i,a)=>{let d=o(i,r+1);!De(d)&&(s[a]=d)}),e[r]=void 0,s}}return t};return o(n,0)},Wr=B("AsyncFunction"),Xr=n=>n&&(et(n)||j(n))&&j(n.then)&&j(n.catch),kn=((n,e)=>n?setImmediate:e?((o,t)=>(Z.addEventListener("message",({source:r,data:s})=>{r===Z&&s===o&&t.length&&t.shift()()},!1),r=>{t.push(r),Z.postMessage(o,"*")}))(`axios@${Math.random()}`,[]):o=>setTimeout(o))(typeof setImmediate=="function",j(Z.postMessage)),Qr=typeof queueMicrotask<"u"?queueMicrotask.bind(Z):typeof process<"u"&&process.nextTick||kn,Zr=n=>n!=null&&j(n[Xe]),c={isArray:ie,isArrayBuffer:On,isBuffer:Tr,isFormData:vr,isArrayBufferView:Pr,isString:hr,isNumber:Mn,isBoolean:yr,isObject:et,isPlainObject:We,isReadableStream:Ir,isRequest:Sr,isResponse:Lr,isHeaders:Cr,isUndefined:De,isDate:Er,isFile:Dr,isBlob:br,isRegExp:Hr,isFunction:j,isStream:Rr,isURLSearchParams:xr,isTypedArray:kr,isFileList:Nr,forEach:be,merge:Ot,extend:wr,trim:Ar,stripBOM:Or,inherits:Mr,toFlatObject:_r,kindOf:Qe,kindOfTest:B,endsWith:Ur,toArray:jr,forEachEntry:Br,matchAll:Fr,isHTMLForm:qr,hasOwnProperty:An,hasOwnProp:An,reduceDescriptors:jn,freezeMethods:$r,toObjectSet:zr,toCamelCase:Vr,noop:Yr,toFiniteNumber:Kr,findKey:_n,global:Z,isContextDefined:Un,isSpecCompliantForm:Jr,toJSONObject:Gr,isAsyncFn:Wr,isThenable:Xr,setImmediate:kn,asap:Qr,isIterable:Zr};function ae(n,e,o,t,r){Error.call(this),Error.captureStackTrace?Error.captureStackTrace(this,this.constructor):this.stack=new Error().stack,this.message=n,this.name="AxiosError",e&&(this.code=e),o&&(this.config=o),t&&(this.request=t),r&&(this.response=r,this.status=r.status?r.status:null)}c.inherits(ae,Error,{toJSON:function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:c.toJSONObject(this.config),code:this.code,status:this.status}}});var Bn=ae.prototype,Fn={};["ERR_BAD_OPTION_VALUE","ERR_BAD_OPTION","ECONNABORTED","ETIMEDOUT","ERR_NETWORK","ERR_FR_TOO_MANY_REDIRECTS","ERR_DEPRECATED","ERR_BAD_RESPONSE","ERR_BAD_REQUEST","ERR_CANCELED","ERR_NOT_SUPPORT","ERR_INVALID_URL"].forEach(n=>{Fn[n]={value:n}});Object.defineProperties(ae,Fn);Object.defineProperty(Bn,"isAxiosError",{value:!0});ae.from=(n,e,o,t,r,s)=>{let i=Object.create(Bn);return c.toFlatObject(n,i,function(d){return d!==Error.prototype},a=>a!=="isAxiosError"),ae.call(i,n.message,e,o,t,r),i.cause=n,i.name=n.name,s&&Object.assign(i,s),i};var y=ae;var tt=null;function _t(n){return c.isPlainObject(n)||c.isArray(n)}function Vn(n){return c.endsWith(n,"[]")?n.slice(0,-2):n}function qn(n,e,o){return n?n.concat(e).map(function(r,s){return r=Vn(r),!o&&s?"["+r+"]":r}).join(o?".":""):e}function es(n){return c.isArray(n)&&!n.some(_t)}var ts=c.toFlatObject(c,{},null,function(e){return/^is[A-Z]/.test(e)});function ns(n,e,o){if(!c.isObject(n))throw new TypeError("target must be an object");e=e||new(tt||FormData),o=c.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(D,h){return!c.isUndefined(h[D])});let t=o.metaTokens,r=o.visitor||l,s=o.dots,i=o.indexes,d=(o.Blob||typeof Blob<"u"&&Blob)&&c.isSpecCompliantForm(e);if(!c.isFunction(r))throw new TypeError("visitor must be a function");function u(T){if(T===null)return"";if(c.isDate(T))return T.toISOString();if(!d&&c.isBlob(T))throw new y("Blob is not supported. Use a Buffer instead.");return c.isArrayBuffer(T)||c.isTypedArray(T)?d&&typeof Blob=="function"?new Blob([T]):Buffer.from(T):T}function l(T,D,h){let A=T;if(T&&!h&&typeof T=="object"){if(c.endsWith(D,"{}"))D=t?D:D.slice(0,-2),T=JSON.stringify(T);else if(c.isArray(T)&&es(T)||(c.isFileList(T)||c.endsWith(D,"[]"))&&(A=c.toArray(T)))return D=Vn(D),A.forEach(function(_,$){!(c.isUndefined(_)||_===null)&&e.append(i===!0?qn([D],$,s):i===null?D:D+"[]",u(_))}),!1}return _t(T)?!0:(e.append(qn(h,D,s),u(T)),!1)}let g=[],b=Object.assign(ts,{defaultVisitor:l,convertValue:u,isVisitable:_t});function I(T,D){if(!c.isUndefined(T)){if(g.indexOf(T)!==-1)throw Error("Circular reference detected in "+D.join("."));g.push(T),c.forEach(T,function(A,O){(!(c.isUndefined(A)||A===null)&&r.call(e,A,c.isString(O)?O.trim():O,D,b))===!0&&I(A,D?D.concat(O):[O])}),g.pop()}}if(!c.isObject(n))throw new TypeError("data must be an object");return I(n),e}var K=ns;function Hn(n){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(n).replace(/[!'()~]|%20|%00/g,function(t){return e[t]})}function $n(n,e){this._pairs=[],n&&K(n,this,e)}var zn=$n.prototype;zn.append=function(e,o){this._pairs.push([e,o])};zn.toString=function(e){let o=e?function(t){return e.call(this,t,Hn)}:Hn;return this._pairs.map(function(r){return o(r[0])+"="+o(r[1])},"").join("&")};var nt=$n;function os(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}function Ne(n,e,o){if(!e)return n;let t=o&&o.encode||os;c.isFunction(o)&&(o={serialize:o});let r=o&&o.serialize,s;if(r?s=r(e,o):s=c.isURLSearchParams(e)?e.toString():new nt(e,o).toString(t),s){let i=n.indexOf("#");i!==-1&&(n=n.slice(0,i)),n+=(n.indexOf("?")===-1?"?":"&")+s}return n}var Ut=class{constructor(){this.handlers=[]}use(e,o,t){return this.handlers.push({fulfilled:e,rejected:o,synchronous:t?t.synchronous:!1,runWhen:t?t.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){c.forEach(this.handlers,function(t){t!==null&&e(t)})}},jt=Ut;var ot={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1};var Yn=typeof URLSearchParams<"u"?URLSearchParams:nt;var Kn=typeof FormData<"u"?FormData:null;var Jn=typeof Blob<"u"?Blob:null;var Gn={isBrowser:!0,classes:{URLSearchParams:Yn,FormData:Kn,Blob:Jn},protocols:["http","https","file","blob","url","data"]};var Ft={};Pn(Ft,{hasBrowserEnv:()=>Bt,hasStandardBrowserEnv:()=>rs,hasStandardBrowserWebWorkerEnv:()=>ss,navigator:()=>kt,origin:()=>is});var Bt=typeof window<"u"&&typeof document<"u",kt=typeof navigator=="object"&&navigator||void 0,rs=Bt&&(!kt||["ReactNative","NativeScript","NS"].indexOf(kt.product)<0),ss=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",is=Bt&&window.location.href||"http://localhost";var L={...Ft,...Gn};function qt(n,e){return K(n,new L.classes.URLSearchParams,Object.assign({visitor:function(o,t,r,s){return L.isNode&&c.isBuffer(o)?(this.append(t,o.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)}},e))}function as(n){return c.matchAll(/\w+|\[(\w*)]/g,n).map(e=>e[0]==="[]"?"":e[1]||e[0])}function cs(n){let e={},o=Object.keys(n),t,r=o.length,s;for(t=0;t=o.length;return i=!i&&c.isArray(r)?r.length:i,d?(c.hasOwnProp(r,i)?r[i]=[r[i],t]:r[i]=t,!a):((!r[i]||!c.isObject(r[i]))&&(r[i]=[]),e(o,t,r[i],s)&&c.isArray(r[i])&&(r[i]=cs(r[i])),!a)}if(c.isFormData(n)&&c.isFunction(n.entries)){let o={};return c.forEachEntry(n,(t,r)=>{e(as(t),r,o,0)}),o}return null}var rt=us;function ds(n,e,o){if(c.isString(n))try{return(e||JSON.parse)(n),c.trim(n)}catch(t){if(t.name!=="SyntaxError")throw t}return(o||JSON.stringify)(n)}var Vt={transitional:ot,adapter:["xhr","http","fetch"],transformRequest:[function(e,o){let t=o.getContentType()||"",r=t.indexOf("application/json")>-1,s=c.isObject(e);if(s&&c.isHTMLForm(e)&&(e=new FormData(e)),c.isFormData(e))return r?JSON.stringify(rt(e)):e;if(c.isArrayBuffer(e)||c.isBuffer(e)||c.isStream(e)||c.isFile(e)||c.isBlob(e)||c.isReadableStream(e))return e;if(c.isArrayBufferView(e))return e.buffer;if(c.isURLSearchParams(e))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(s){if(t.indexOf("application/x-www-form-urlencoded")>-1)return qt(e,this.formSerializer).toString();if((a=c.isFileList(e))||t.indexOf("multipart/form-data")>-1){let d=this.env&&this.env.FormData;return K(a?{"files[]":e}:e,d&&new d,this.formSerializer)}}return s||r?(o.setContentType("application/json",!1),ds(e)):e}],transformResponse:[function(e){let o=this.transitional||Vt.transitional,t=o&&o.forcedJSONParsing,r=this.responseType==="json";if(c.isResponse(e)||c.isReadableStream(e))return e;if(e&&c.isString(e)&&(t&&!this.responseType||r)){let i=!(o&&o.silentJSONParsing)&&r;try{return JSON.parse(e)}catch(a){if(i)throw a.name==="SyntaxError"?y.from(a,y.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:L.classes.FormData,Blob:L.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};c.forEach(["delete","get","head","post","put","patch"],n=>{Vt.headers[n]={}});var ce=Vt;var ms=c.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),Wn=n=>{let e={},o,t,r;return n&&n.split(` -`).forEach(function(i){r=i.indexOf(":"),o=i.substring(0,r).trim().toLowerCase(),t=i.substring(r+1).trim(),!(!o||e[o]&&ms[o])&&(o==="set-cookie"?e[o]?e[o].push(t):e[o]=[t]:e[o]=e[o]?e[o]+", "+t:t)}),e};var Xn=Symbol("internals");function Re(n){return n&&String(n).trim().toLowerCase()}function st(n){return n===!1||n==null?n:c.isArray(n)?n.map(st):String(n)}function ps(n){let e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,t;for(;t=o.exec(n);)e[t[1]]=t[2];return e}var ls=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function Ht(n,e,o,t,r){if(c.isFunction(t))return t.call(this,e,o);if(r&&(e=o),!!c.isString(e)){if(c.isString(t))return e.indexOf(t)!==-1;if(c.isRegExp(t))return t.test(e)}}function fs(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,o,t)=>o.toUpperCase()+t)}function gs(n,e){let o=c.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(n,t+o,{value:function(r,s,i){return this[t].call(this,e,r,s,i)},configurable:!0})})}var ue=class{constructor(e){e&&this.set(e)}set(e,o,t){let r=this;function s(a,d,u){let l=Re(d);if(!l)throw new Error("header name must be a non-empty string");let g=c.findKey(r,l);(!g||r[g]===void 0||u===!0||u===void 0&&r[g]!==!1)&&(r[g||d]=st(a))}let i=(a,d)=>c.forEach(a,(u,l)=>s(u,l,d));if(c.isPlainObject(e)||e instanceof this.constructor)i(e,o);else if(c.isString(e)&&(e=e.trim())&&!ls(e))i(Wn(e),o);else if(c.isObject(e)&&c.isIterable(e)){let a={},d,u;for(let l of e){if(!c.isArray(l))throw TypeError("Object iterator must return a key-value pair");a[u=l[0]]=(d=a[u])?c.isArray(d)?[...d,l[1]]:[d,l[1]]:l[1]}i(a,o)}else e!=null&&s(o,e,t);return this}get(e,o){if(e=Re(e),e){let t=c.findKey(this,e);if(t){let r=this[t];if(!o)return r;if(o===!0)return ps(r);if(c.isFunction(o))return o.call(this,r,t);if(c.isRegExp(o))return o.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,o){if(e=Re(e),e){let t=c.findKey(this,e);return!!(t&&this[t]!==void 0&&(!o||Ht(this,this[t],t,o)))}return!1}delete(e,o){let t=this,r=!1;function s(i){if(i=Re(i),i){let a=c.findKey(t,i);a&&(!o||Ht(t,t[a],a,o))&&(delete t[a],r=!0)}}return c.isArray(e)?e.forEach(s):s(e),r}clear(e){let o=Object.keys(this),t=o.length,r=!1;for(;t--;){let s=o[t];(!e||Ht(this,this[s],s,e,!0))&&(delete this[s],r=!0)}return r}normalize(e){let o=this,t={};return c.forEach(this,(r,s)=>{let i=c.findKey(t,s);if(i){o[i]=st(r),delete o[s];return}let a=e?fs(s):String(s).trim();a!==s&&delete o[s],o[a]=st(r),t[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let o=Object.create(null);return c.forEach(this,(t,r)=>{t!=null&&t!==!1&&(o[r]=e&&c.isArray(t)?t.join(", "):t)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,o])=>e+": "+o).join(` -`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){let t=new this(e);return o.forEach(r=>t.set(r)),t}static accessor(e){let t=(this[Xn]=this[Xn]={accessors:{}}).accessors,r=this.prototype;function s(i){let a=Re(i);t[a]||(gs(r,i),t[a]=!0)}return c.isArray(e)?e.forEach(s):s(e),this}};ue.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);c.reduceDescriptors(ue.prototype,({value:n},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(t){this[o]=t}}});c.freezeMethods(ue);var M=ue;function ve(n,e){let o=this||ce,t=e||o,r=M.from(t.headers),s=t.data;return c.forEach(n,function(a){s=a.call(o,s,r.normalize(),e?e.status:void 0)}),r.normalize(),s}function xe(n){return!!(n&&n.__CANCEL__)}function Qn(n,e,o){y.call(this,n??"canceled",y.ERR_CANCELED,e,o),this.name="CanceledError"}c.inherits(Qn,y,{__CANCEL__:!0});var V=Qn;function Ie(n,e,o){let t=o.config.validateStatus;!o.status||!t||t(o.status)?n(o):e(new y("Request failed with status code "+o.status,[y.ERR_BAD_REQUEST,y.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}function $t(n){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function Ts(n,e){n=n||10;let o=new Array(n),t=new Array(n),r=0,s=0,i;return e=e!==void 0?e:1e3,function(d){let u=Date.now(),l=t[s];i||(i=u),o[r]=d,t[r]=u;let g=s,b=0;for(;g!==r;)b+=o[g++],g=g%n;if(r=(r+1)%n,r===s&&(s=(s+1)%n),u-i{o=l,r=null,s&&(clearTimeout(s),s=null),n.apply(null,u)};return[(...u)=>{let l=Date.now(),g=l-o;g>=t?i(u,l):(r=u,s||(s=setTimeout(()=>{s=null,i(r)},t-g)))},()=>r&&i(r)]}var eo=Ps;var de=(n,e,o=3)=>{let t=0,r=Zn(50,250);return eo(s=>{let i=s.loaded,a=s.lengthComputable?s.total:void 0,d=i-t,u=r(d),l=i<=a;t=i;let g={loaded:i,total:a,progress:a?i/a:void 0,bytes:d,rate:u||void 0,estimated:u&&a&&l?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};n(g)},o)},zt=(n,e)=>{let o=n!=null;return[t=>e[0]({lengthComputable:o,total:n,loaded:t}),e[1]]},Yt=n=>(...e)=>c.asap(()=>n(...e));var to=L.hasStandardBrowserEnv?((n,e)=>o=>(o=new URL(o,L.origin),n.protocol===o.protocol&&n.host===o.host&&(e||n.port===o.port)))(new URL(L.origin),L.navigator&&/(msie|trident)/i.test(L.navigator.userAgent)):()=>!0;var no=L.hasStandardBrowserEnv?{write(n,e,o,t,r,s){let i=[n+"="+encodeURIComponent(e)];c.isNumber(o)&&i.push("expires="+new Date(o).toGMTString()),c.isString(t)&&i.push("path="+t),c.isString(r)&&i.push("domain="+r),s===!0&&i.push("secure"),document.cookie=i.join("; ")},read(n){let e=document.cookie.match(new RegExp("(^|;\\s*)("+n+")=([^;]*)"));return e?decodeURIComponent(e[3]):null},remove(n){this.write(n,"",Date.now()-864e5)}}:{write(){},read(){return null},remove(){}};function Kt(n){return/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function Jt(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function Se(n,e,o){let t=!Kt(e);return n&&(t||o==!1)?Jt(n,e):e}var oo=n=>n instanceof M?{...n}:n;function F(n,e){e=e||{};let o={};function t(u,l,g,b){return c.isPlainObject(u)&&c.isPlainObject(l)?c.merge.call({caseless:b},u,l):c.isPlainObject(l)?c.merge({},l):c.isArray(l)?l.slice():l}function r(u,l,g,b){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u,g,b)}else return t(u,l,g,b)}function s(u,l){if(!c.isUndefined(l))return t(void 0,l)}function i(u,l){if(c.isUndefined(l)){if(!c.isUndefined(u))return t(void 0,u)}else return t(void 0,l)}function a(u,l,g){if(g in e)return t(u,l);if(g in n)return t(void 0,u)}let d={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,l,g)=>r(oo(u),oo(l),g,!0)};return c.forEach(Object.keys(Object.assign({},n,e)),function(l){let g=d[l]||r,b=g(n[l],e[l],l);c.isUndefined(b)&&g!==a||(o[l]=b)}),o}var it=n=>{let e=F({},n),{data:o,withXSRFToken:t,xsrfHeaderName:r,xsrfCookieName:s,headers:i,auth:a}=e;e.headers=i=M.from(i),e.url=Ne(Se(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):"")));let d;if(c.isFormData(o)){if(L.hasStandardBrowserEnv||L.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if((d=i.getContentType())!==!1){let[u,...l]=d?d.split(";").map(g=>g.trim()).filter(Boolean):[];i.setContentType([u||"multipart/form-data",...l].join("; "))}}if(L.hasStandardBrowserEnv&&(t&&c.isFunction(t)&&(t=t(e)),t||t!==!1&&to(e.url))){let u=r&&s&&no.read(s);u&&i.set(r,u)}return e};var hs=typeof XMLHttpRequest<"u",ro=hs&&function(n){return new Promise(function(o,t){let r=it(n),s=r.data,i=M.from(r.headers).normalize(),{responseType:a,onUploadProgress:d,onDownloadProgress:u}=r,l,g,b,I,T;function D(){I&&I(),T&&T(),r.cancelToken&&r.cancelToken.unsubscribe(l),r.signal&&r.signal.removeEventListener("abort",l)}let h=new XMLHttpRequest;h.open(r.method.toUpperCase(),r.url,!0),h.timeout=r.timeout;function A(){if(!h)return;let _=M.from("getAllResponseHeaders"in h&&h.getAllResponseHeaders()),U={data:!a||a==="text"||a==="json"?h.responseText:h.response,status:h.status,statusText:h.statusText,headers:_,config:n,request:h};Ie(function(J){o(J),D()},function(J){t(J),D()},U),h=null}"onloadend"in h?h.onloadend=A:h.onreadystatechange=function(){!h||h.readyState!==4||h.status===0&&!(h.responseURL&&h.responseURL.indexOf("file:")===0)||setTimeout(A)},h.onabort=function(){h&&(t(new y("Request aborted",y.ECONNABORTED,n,h)),h=null)},h.onerror=function(){t(new y("Network Error",y.ERR_NETWORK,n,h)),h=null},h.ontimeout=function(){let $=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded",U=r.transitional||ot;r.timeoutErrorMessage&&($=r.timeoutErrorMessage),t(new y($,U.clarifyTimeoutError?y.ETIMEDOUT:y.ECONNABORTED,n,h)),h=null},s===void 0&&i.setContentType(null),"setRequestHeader"in h&&c.forEach(i.toJSON(),function($,U){h.setRequestHeader(U,$)}),c.isUndefined(r.withCredentials)||(h.withCredentials=!!r.withCredentials),a&&a!=="json"&&(h.responseType=r.responseType),u&&([b,T]=de(u,!0),h.addEventListener("progress",b)),d&&h.upload&&([g,I]=de(d),h.upload.addEventListener("progress",g),h.upload.addEventListener("loadend",I)),(r.cancelToken||r.signal)&&(l=_=>{h&&(t(!_||_.type?new V(null,n,h):_),h.abort(),h=null)},r.cancelToken&&r.cancelToken.subscribe(l),r.signal&&(r.signal.aborted?l():r.signal.addEventListener("abort",l)));let O=$t(r.url);if(O&&L.protocols.indexOf(O)===-1){t(new y("Unsupported protocol "+O+":",y.ERR_BAD_REQUEST,n));return}h.send(s||null)})};var ys=(n,e)=>{let{length:o}=n=n?n.filter(Boolean):[];if(e||o){let t=new AbortController,r,s=function(u){if(!r){r=!0,a();let l=u instanceof Error?u:this.reason;t.abort(l instanceof y?l:new V(l instanceof Error?l.message:l))}},i=e&&setTimeout(()=>{i=null,s(new y(`timeout ${e} of ms exceeded`,y.ETIMEDOUT))},e),a=()=>{n&&(i&&clearTimeout(i),i=null,n.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),n=null)};n.forEach(u=>u.addEventListener("abort",s));let{signal:d}=t;return d.unsubscribe=()=>c.asap(a),d}},so=ys;var Es=function*(n,e){let o=n.byteLength;if(!e||o{let r=Ds(n,e),s=0,i,a=d=>{i||(i=!0,t&&t(d))};return new ReadableStream({async pull(d){try{let{done:u,value:l}=await r.next();if(u){a(),d.close();return}let g=l.byteLength;if(o){let b=s+=g;o(b)}d.enqueue(new Uint8Array(l))}catch(u){throw a(u),u}},cancel(d){return a(d),r.return()}},{highWaterMark:2})};var ct=typeof fetch=="function"&&typeof Request=="function"&&typeof Response=="function",ao=ct&&typeof ReadableStream=="function",Ns=ct&&(typeof TextEncoder=="function"?(n=>e=>n.encode(e))(new TextEncoder):async n=>new Uint8Array(await new Response(n).arrayBuffer())),co=(n,...e)=>{try{return!!n(...e)}catch{return!1}},Rs=ao&&co(()=>{let n=!1,e=new Request(L.origin,{body:new ReadableStream,method:"POST",get duplex(){return n=!0,"half"}}).headers.has("Content-Type");return n&&!e}),io=64*1024,Wt=ao&&co(()=>c.isReadableStream(new Response("").body)),at={stream:Wt&&(n=>n.body)};ct&&(n=>{["text","arrayBuffer","blob","formData","stream"].forEach(e=>{!at[e]&&(at[e]=c.isFunction(n[e])?o=>o[e]():(o,t)=>{throw new y(`Response type '${e}' is not supported`,y.ERR_NOT_SUPPORT,t)})})})(new Response);var vs=async n=>{if(n==null)return 0;if(c.isBlob(n))return n.size;if(c.isSpecCompliantForm(n))return(await new Request(L.origin,{method:"POST",body:n}).arrayBuffer()).byteLength;if(c.isArrayBufferView(n)||c.isArrayBuffer(n))return n.byteLength;if(c.isURLSearchParams(n)&&(n=n+""),c.isString(n))return(await Ns(n)).byteLength},xs=async(n,e)=>{let o=c.toFiniteNumber(n.getContentLength());return o??vs(e)},uo=ct&&(async n=>{let{url:e,method:o,data:t,signal:r,cancelToken:s,timeout:i,onDownloadProgress:a,onUploadProgress:d,responseType:u,headers:l,withCredentials:g="same-origin",fetchOptions:b}=it(n);u=u?(u+"").toLowerCase():"text";let I=so([r,s&&s.toAbortSignal()],i),T,D=I&&I.unsubscribe&&(()=>{I.unsubscribe()}),h;try{if(d&&Rs&&o!=="get"&&o!=="head"&&(h=await xs(l,t))!==0){let U=new Request(e,{method:"POST",body:t,duplex:"half"}),Y;if(c.isFormData(t)&&(Y=U.headers.get("content-type"))&&l.setContentType(Y),U.body){let[J,ke]=zt(h,de(Yt(d)));t=Gt(U.body,io,J,ke)}}c.isString(g)||(g=g?"include":"omit");let A="credentials"in Request.prototype;T=new Request(e,{...b,signal:I,method:o.toUpperCase(),headers:l.normalize().toJSON(),body:t,duplex:"half",credentials:A?g:void 0});let O=await fetch(T),_=Wt&&(u==="stream"||u==="response");if(Wt&&(a||_&&D)){let U={};["status","statusText","headers"].forEach(Tn=>{U[Tn]=O[Tn]});let Y=c.toFiniteNumber(O.headers.get("content-length")),[J,ke]=a&&zt(Y,de(Yt(a),!0))||[];O=new Response(Gt(O.body,io,J,()=>{ke&&ke(),D&&D()}),U)}u=u||"text";let $=await at[c.findKey(at,u)||"text"](O,n);return!_&&D&&D(),await new Promise((U,Y)=>{Ie(U,Y,{data:$,headers:M.from(O.headers),status:O.status,statusText:O.statusText,config:n,request:T})})}catch(A){throw D&&D(),A&&A.name==="TypeError"&&/Load failed|fetch/i.test(A.message)?Object.assign(new y("Network Error",y.ERR_NETWORK,n,T),{cause:A.cause||A}):y.from(A,A&&A.code,n,T)}});var Xt={http:tt,xhr:ro,fetch:uo};c.forEach(Xt,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});var mo=n=>`- ${n}`,Is=n=>c.isFunction(n)||n===null||n===!1,ut={getAdapter:n=>{n=c.isArray(n)?n:[n];let{length:e}=n,o,t,r={};for(let s=0;s`adapter ${a} `+(d===!1?"is not supported by the environment":"is not available in the build")),i=e?s.length>1?`since : -`+s.map(mo).join(` -`):" "+mo(s[0]):"as no adapter specified";throw new y("There is no suitable adapter to dispatch the request "+i,"ERR_NOT_SUPPORT")}return t},adapters:Xt};function Qt(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new V(null,n)}function dt(n){return Qt(n),n.headers=M.from(n.headers),n.data=ve.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),ut.getAdapter(n.adapter||ce.adapter)(n).then(function(t){return Qt(n),t.data=ve.call(n,n.transformResponse,t),t.headers=M.from(t.headers),t},function(t){return xe(t)||(Qt(n),t&&t.response&&(t.response.data=ve.call(n,n.transformResponse,t.response),t.response.headers=M.from(t.response.headers))),Promise.reject(t)})}var mt="1.9.0";var pt={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{pt[n]=function(t){return typeof t===n||"a"+(e<1?"n ":" ")+n}});var po={};pt.transitional=function(e,o,t){function r(s,i){return"[Axios v"+mt+"] Transitional option '"+s+"'"+i+(t?". "+t:"")}return(s,i,a)=>{if(e===!1)throw new y(r(i," has been removed"+(o?" in "+o:"")),y.ERR_DEPRECATED);return o&&!po[i]&&(po[i]=!0,console.warn(r(i," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(s,i,a):!0}};pt.spelling=function(e){return(o,t)=>(console.warn(`${t} is likely a misspelling of ${e}`),!0)};function Ss(n,e,o){if(typeof n!="object")throw new y("options must be an object",y.ERR_BAD_OPTION_VALUE);let t=Object.keys(n),r=t.length;for(;r-- >0;){let s=t[r],i=e[s];if(i){let a=n[s],d=a===void 0||i(a,s,n);if(d!==!0)throw new y("option "+s+" must be "+d,y.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new y("Unknown option "+s,y.ERR_BAD_OPTION)}}var Le={assertOptions:Ss,validators:pt};var H=Le.validators,me=class{constructor(e){this.defaults=e||{},this.interceptors={request:new jt,response:new jt}}async request(e,o){try{return await this._request(e,o)}catch(t){if(t instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;let s=r.stack?r.stack.replace(/^.+\n/,""):"";try{t.stack?s&&!String(t.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(t.stack+=` -`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=F(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Le.assertOptions(t,{silentJSONParsing:H.transitional(H.boolean),forcedJSONParsing:H.transitional(H.boolean),clarifyTimeoutError:H.transitional(H.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Le.assertOptions(r,{encode:H.function,serialize:H.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Le.assertOptions(o,{baseUrl:H.spelling("baseURL"),withXsrfToken:H.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],T=>{delete s[T]}),o.headers=M.concat(i,s);let a=[],d=!0;this.interceptors.request.forEach(function(D){typeof D.runWhen=="function"&&D.runWhen(o)===!1||(d=d&&D.synchronous,a.unshift(D.fulfilled,D.rejected))});let u=[];this.interceptors.response.forEach(function(D){u.push(D.fulfilled,D.rejected)});let l,g=0,b;if(!d){let T=[dt.bind(this),void 0];for(T.unshift.apply(T,a),T.push.apply(T,u),b=T.length,l=Promise.resolve(o);g{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new V(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},lo=Zt;function en(n){return function(o){return n.apply(null,o)}}function tn(n){return c.isObject(n)&&n.isAxiosError===!0}var nn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511};Object.entries(nn).forEach(([n,e])=>{nn[e]=n});var fo=nn;function go(n){let e=new Ce(n),o=Ee(Ce.prototype.request,e);return c.extend(o,Ce.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return go(F(n,r))},o}var w=go(ce);w.Axios=Ce;w.CanceledError=V;w.CancelToken=lo;w.isCancel=xe;w.VERSION=mt;w.toFormData=K;w.AxiosError=y;w.Cancel=w.CanceledError;w.all=function(e){return Promise.all(e)};w.spread=en;w.isAxiosError=tn;w.mergeConfig=F;w.AxiosHeaders=M;w.formToJSON=n=>rt(c.isHTMLForm(n)?new FormData(n):n);w.getAdapter=ut.getAdapter;w.HttpStatusCode=fo;w.default=w;var lt=w;var{Axios:yd,AxiosError:To,CanceledError:Ed,isCancel:Dd,CancelToken:bd,VERSION:Nd,all:Rd,Cancel:vd,isAxiosError:xd,spread:Id,toFormData:Sd,AxiosHeaders:Ld,HttpStatusCode:Cd,formToJSON:Ad,getAdapter:wd,mergeConfig:Od}=lt;var k=class n extends To{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var Po=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new k('Properties "amountFix" and "amountPercent" cannot be used at the same time');return v(e,{setTotalPrice(t){p(e,"totalPrice",t)},getTotalPrice(t){return m(e,"totalPrice",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setAmountFix(t){p(e,"amountFix",t)},getAmountFix(t){return m(e,"amountFix",t)},setAmountPercent(t){p(e,"amountPercent",t)},getAmountPercent(t){return m(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},Po,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},ft=Po;var ee=n=>{let e=R(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>ft(t))),Ge(e)};var ho=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setName(t){p(e,"name",t)},getName(t){return m(e,"name",t)},setLicensingModel(t){p(e,"licensingModel",t)},getLicensingModel(t){return m(e,"licensingModel",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},ho)},gt=ho;var te=n=>gt(R(n));var yo=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setExpirationTime(t){p(e,"expirationTime",t)},getExpirationTime(t){return m(e,"expirationTime",t)},setTokenType(t){p(e,"tokenType",t)},getTokenType(t){return m(e,"tokenType",t)},setLicenseeNumber(t){p(e,"licenseeNumber",t)},getLicenseeNumber(t){return m(e,"licenseeNumber",t)},setAction(t){p(e,"action",t)},getAction(t){return m(e,"action",t)},setApiKeyRole(t){p(e,"apiKeyRole",t)},getApiKeyRole(t){return m(e,"apiKeyRole",t)},setBundleNumber(t){p(e,"bundleNumber",t)},getBundleNumber(t){return m(e,"bundleNumber",t)},setBundlePrice(t){p(e,"bundlePrice",t)},getBundlePrice(t){return m(e,"bundlePrice",t)},setProductNumber(t){p(e,"productNumber",t)},getProductNumber(t){return m(e,"productNumber",t)},setPredefinedShoppingItem(t){p(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return m(e,"predefinedShoppingItem",t)},setSuccessURL(t){p(e,"successURL",t)},getSuccessURL(t){return m(e,"successURL",t)},setSuccessURLTitle(t){p(e,"successURLTitle",t)},getSuccessURLTitle(t){return m(e,"successURLTitle",t)},setCancelURL(t){p(e,"cancelURL",t)},getCancelURL(t){return m(e,"cancelURL",t)},setCancelURLTitle(t){p(e,"cancelURLTitle",t)},getCancelURLTitle(t){return m(e,"cancelURLTitle",t)},getShopURL(t){return m(e,"shopURL",t)},serialize(){return C(e,{ignore:["shopURL"]})}},yo)},Tt=yo;var pe=n=>{let e=R(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Tt(e)};var on=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Pt=(n,e)=>new on(n,e);var Eo=function(n={}){let e={...n};return v(e,{setActive(t){p(e,"active",t)},getActive(t){return m(e,"active",t)},setNumber(t){p(e,"number",t)},getNumber(t){return m(e,"number",t)},setStatus(t){p(e,"status",t)},getStatus(t){return m(e,"status",t)},setSource(t){p(e,"source",t)},getSource(t){return m(e,"source",t)},setGrandTotal(t){p(e,"grandTotal",t)},getGrandTotal(t){return m(e,"grandTotal",t)},setDiscount(t){p(e,"discount",t)},getDiscount(t){return m(e,"discount",t)},setCurrency(t){p(e,"currency",t)},getCurrency(t){return m(e,"currency",t)},setDateCreated(t){p(e,"dateCreated",t)},getDateCreated(t){return m(e,"dateCreated",t)},setDateClosed(t){p(e,"dateClosed",t)},getDateClosed(t){return m(e,"dateClosed",t)},setPaymentMethod(t){p(e,"paymentMethod",t)},getPaymentMethod(t){return m(e,"paymentMethod",t)},setLicenseTransactionJoins(t){p(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return m(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,C(t,{ignore:["licenseTransactionJoins","inUse"]})}},Eo)},Ae=Eo;var ne=n=>{let e=R(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Ae({number:s}),d=re({number:i});return Pt(a,d)})),Ae(e)};var Do=lt.create(),bo=null,No=[],Ro=n=>{Do=n},ht=()=>Do,rn=n=>{bo=n},vo=()=>bo,sn=n=>{No=n},xo=()=>No;var an={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var yt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var le=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${an.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(d,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?yt(d):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${an.version}`),d)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case q.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new k('Missing parameter "username"');if(!n.getPassword())throw new k('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case q.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new k('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case q.ANONYMOUS_IDENTIFICATION:break;default:throw new k("Unknown security mode")}let a=r?.axiosInstance||ht();try{let d=await a(i),u=d.data.infos?.info||[];if(rn(d),sn(u),r?.onResponse&&r.onResponse(d),u.length>0){r?.onInfo&&r.onInfo(u);let l=u.find(({type:g})=>g==="ERROR");if(l)throw new k(l.value,l.id,d.config,d.request,d)}return d}catch(d){let u=d,l=u.response,g=l?.data?.infos?.info||[];if(rn(l||null),sn(g),d.isAxiosError){let b=d.message;if(l?.data&&g.length>0){let I=g.find(({type:T})=>T==="ERROR");I&&(b=I.value)}throw new k(b,u.code,u.config,u.request,u.response)}throw d}};var Io=(n,e,o,t)=>le(n,"get",e,o,t),So=(n,e,o,t)=>le(n,"post",e,o,t),Lo=(n,e,o,t)=>le(n,"delete",e,o,t);var Cs={setAxiosInstance(n){Ro(n)},getAxiosInstance(){return ht()},getLastHttpRequestInfo(){return vo()},getInfo(){return xo()},get(n,e,o,t){return Io(n,e,o,t)},post(n,e,o,t){return So(n,e,o,t)},delete(n,e,o,t){return Lo(n,e,o,t)},request(n,e,o,t,r){return le(n,e,o,t,r)},toQueryString(n){return yt(n)}},f=Cs;var Co=";",Ao="=",S=n=>Object.keys(n).map(e=>`${e}${Ao}${String(n[e])}`).join(Co),wo=n=>{let e={};return n.split(Co).forEach(o=>{let[t,r]=o.split(Ao);e[t]=r}),e};var cn=n=>typeof n<"u"&&typeof n!="function",we=n=>cn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,N=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!we(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},E=(n,e)=>{if(N(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var Oo=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,d,u){return Object.hasOwn(i,d)?i[d]:Reflect.get(a,d,u)},set(a,d,u,l){return Reflect.set(a,d,u,l)},getPrototypeOf(){return Oo.prototype||null}})},x=Oo;var fe=P.Bundle.ENDPOINT_PATH,As=P.Bundle.ENDPOINT_OBTAIN_PATH,Et=P.Bundle.TYPE,ws={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${fe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Et);return G(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,fe,t,o)).data.items,i=s?.item.filter(a=>a.type===Et).map(a=>G(a));return x(i||[],s)},async create(n,e,o){N(e,"bundle");let r=(await f.post(n,fe,e.serialize(),o)).data.items?.item.find(s=>s.type===Et);return G(r)},async update(n,e,o,t){E(e,"number"),N(o,"bundle");let s=(await f.post(n,`${fe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Et);return G(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${fe}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){E(e,"number"),E(o,"licenseeNumber");let r={[P.Licensee.LICENSEE_NUMBER]:o};return(await f.post(n,`${fe}/${e}/${As}`,r,t)).data.items?.item.filter(d=>d.type===P.License.TYPE)?.map(d=>z(d))||[]}},Mo=ws;var un=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!we(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Dt=()=>new un;var oe=P.Licensee.ENDPOINT_PATH,Os=P.Licensee.ENDPOINT_PATH_VALIDATE,Ms=P.Licensee.ENDPOINT_PATH_TRANSFER,bt=P.Licensee.TYPE,_s={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===bt);return W(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,oe,t,o)).data.items,i=s?.item.filter(a=>a.type===bt).map(a=>W(a));return x(i||[],s)},async create(n,e,o,t){N(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,oe,r,t)).data.items?.item.find(a=>a.type===bt);return W(i)},async update(n,e,o,t){E(e,"number"),N(o,"licensee");let s=(await f.post(n,`${oe}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bt);return W(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${oe}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){E(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let l=o.licenseeProperties;Object.keys(l).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let g=o.getParameters();Object.keys(g).forEach((b,I)=>{r[`${P.ProductModule.PRODUCT_MODULE_NUMBER}${I}`]=b;let T=g[b];T&&Object.keys(T).forEach(D=>{r[D+I]=T[D]})})}let s=await f.post(n,`${oe}/${e}/${Os}`,r,t),i=Dt(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===P.Validation.TYPE)?.forEach(u=>{i.setValidation(R(u))}),i},transfer(n,e,o,t){E(e,"number"),E(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return f.post(n,`${oe}/${e}/${Ms}`,r,t)}},_o=_s;var Oe=P.License.ENDPOINT_PATH,Nt=P.License.TYPE,Us={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Oe}/${e}`,{},o)).data.items?.item.find(s=>s.type===Nt);return z(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Oe,t,o)).data.items,i=s?.item.filter(a=>a.type===Nt).map(a=>z(a));return x(i||[],s)},async create(n,e,o,t,r,s){N(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let d=(await f.post(n,Oe,i,s)).data.items?.item.find(u=>u.type===Nt);return z(d)},async update(n,e,o,t,r){E(e,"number"),N(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await f.post(n,`${Oe}/${e}`,s,r)).data.items?.item.find(d=>d.type===Nt);return z(a)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Oe}/${e}`,{forceCascade:!!o},t)}},Uo=Us;var Me=P.LicenseTemplate.ENDPOINT_PATH,Rt=P.LicenseTemplate.TYPE,js={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Me}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rt);return X(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Me,t,o)).data.items,i=s?.item.filter(a=>a.type===Rt).map(a=>X(a));return x(i||[],s)},async create(n,e,o,t){N(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await f.post(n,Me,r,t)).data.items?.item.find(a=>a.type===Rt);return X(i)},async update(n,e,o,t){E(e,"number"),N(o,"licenseTemplate");let s=(await f.post(n,`${Me}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Rt);return X(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Me}/${e}`,{forceCascade:!!o},t)}},jo=js;var _e=P.Notification.ENDPOINT_PATH,vt=P.Notification.TYPE,ks={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===vt);return Q(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,_e,t,o)).data.items,i=s?.item.filter(a=>a.type===vt).map(a=>Q(a));return x(i||[],s)},async create(n,e,o){N(e,"notification");let r=(await f.post(n,_e,e.serialize(),o)).data.items?.item.find(s=>s.type===vt);return Q(r)},async update(n,e,o,t){E(e,"number"),N(o,"notification");let s=(await f.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===vt);return Q(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${_e}/${e}`,{forceCascade:!!o},t)}},ko=ks;var dn=P.PaymentMethod.ENDPOINT_PATH,mn=P.PaymentMethod.TYPE,Bs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===mn);return se(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,dn,t,o)).data.items,i=s?.item.filter(a=>a.type===mn).map(a=>se(a));return x(i||[],s)},async update(n,e,o,t){E(e,"number"),N(o,"paymentMethod");let s=(await f.post(n,`${dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===mn);return se(s)}},Bo=Bs;var Ue=P.ProductModule.ENDPOINT_PATH,xt=P.ProductModule.TYPE,Fs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===xt);return te(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Ue,t,o)).data.items,i=s?.item.filter(a=>a.type===xt).map(a=>te(a));return x(i||[],s)},async create(n,e,o,t){N(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await f.post(n,Ue,r,t)).data.items?.item.find(a=>a.type===xt);return te(i)},async update(n,e,o,t){E(e,"number"),N(o,"productModule");let s=(await f.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===xt);return te(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${Ue}/${e}`,{forceCascade:!!o},t)}},Fo=Fs;var je=P.Product.ENDPOINT_PATH,It=P.Product.TYPE,qs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${je}/${e}`,{},o)).data.items?.item.find(s=>s.type===It);return ee(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,je,t,o)).data.items,i=s?.item.filter(a=>a.type===It).map(a=>ee(a));return x(i||[],s)},async create(n,e,o){N(e,"product");let r=(await f.post(n,je,e.serialize(),o)).data.items?.item.find(s=>s.type===It);return ee(r)},async update(n,e,o,t){E(e,"number"),N(o,"product");let s=(await f.post(n,`${je}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===It);return ee(s)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${je}/${e}`,{forceCascade:!!o},t)}},qo=qs;var St=P.Token.ENDPOINT_PATH,pn=P.Token.TYPE,Vs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${St}/${e}`,{},o)).data.items?.item.find(s=>s.type===pn);return pe(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,St,t,o)).data.items,i=s?.item.filter(a=>a.type===pn).map(a=>pe(a));return x(i||[],s)},async create(n,e,o){N(e,"token");let r=(await f.post(n,St,e.serialize(),o)).data.items?.item.find(s=>s.type===pn);return pe(r)},delete(n,e,o,t){return E(e,"number"),f.delete(n,`${St}/${e}`,{forceCascade:!!o},t)}},Vo=Vs;var Lt=P.Transaction.ENDPOINT_PATH,Ct=P.Transaction.TYPE,Hs={async get(n,e,o){E(e,"number");let r=(await f.get(n,`${Lt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async list(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let s=(await f.get(n,Lt,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>ne(a));return x(i||[],s)},async create(n,e,o){N(e,"transaction");let r=(await f.post(n,Lt,e.serialize(),o)).data.items?.item.find(s=>s.type===Ct);return ne(r)},async update(n,e,o,t){E(e,"number"),N(o,"transaction");let s=(await f.post(n,`${Lt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return ne(s)}},Ho=Hs;var ln=P.Utility.ENDPOINT_PATH,$s={async listLicenseTypes(n,e){let o=`${ln}/${P.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await f.get(n,o,void 0,e)).data.items,s=P.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>R(a).name);return x(i||[],r)},async listLicensingModels(n,e){let o=`${ln}/${P.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await f.get(n,o,void 0,e)).data.items,s=P.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>R(a).name);return x(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[P.FILTER]=typeof e=="string"?e:S(e));let r=`${ln}/${P.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await f.get(n,r,t,o)).data.items,a=P.Utility.COUNTRY_TYPE,d=i?.item.filter(u=>u.type===a).map(u=>$e(u));return x(d||[],i)}},$o=$s;var fn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||q.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},zo=n=>new fn(n);var gn=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Yo=()=>new gn;return Xo(zs);})(); +"use strict";var NetLicensing=(()=>{var qt=Object.defineProperty;var sr=Object.getOwnPropertyDescriptor;var ir=Object.getOwnPropertyNames;var ar=Object.prototype.hasOwnProperty;var wn=(n,e)=>{for(var o in e)qt(n,o,{get:e[o],enumerable:!0})},cr=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of ir(e))!ar.call(n,r)&&r!==o&&qt(n,r,{get:()=>e[r],enumerable:!(t=sr(e,r))||t.enumerable});return n};var ur=n=>cr(qt({},"__esModule",{value:!0}),n);var ri={};wn(ri,{ApiKeyRole:()=>_n,Bundle:()=>Ze,BundleService:()=>zo,Constants:()=>h,Context:()=>nr,Country:()=>et,License:()=>de,LicenseService:()=>Ko,LicenseTemplate:()=>ot,LicenseTemplateService:()=>Jo,LicenseTransactionJoin:()=>vt,LicenseType:()=>Re,Licensee:()=>nt,LicenseeSecretMode:()=>We,LicenseeService:()=>Yo,LicensingModel:()=>Mn,NlicError:()=>k,NodeSecretMode:()=>Un,Notification:()=>rt,NotificationEvent:()=>Ne,NotificationProtocol:()=>ve,NotificationService:()=>Go,Page:()=>I,PaymentMethod:()=>st,PaymentMethodEnum:()=>jn,PaymentMethodService:()=>Wo,Product:()=>it,ProductDiscount:()=>bt,ProductModule:()=>Rt,ProductModuleService:()=>Xo,ProductService:()=>Qo,SecurityMode:()=>Y,Service:()=>g,TimeVolumePeriod:()=>Xe,Token:()=>Nt,TokenService:()=>Zo,TokenType:()=>Ie,Transaction:()=>Fe,TransactionService:()=>er,TransactionSource:()=>Qe,TransactionStatus:()=>xe,UtilityService:()=>tr,ValidationParameters:()=>or,ValidationResults:()=>St,defineEntity:()=>v,ensureNotEmpty:()=>D,ensureNotNull:()=>R,filterDecode:()=>Ho,filterEncode:()=>x,isDefined:()=>yn,isValid:()=>qe,itemToBundle:()=>ee,itemToCountry:()=>tt,itemToLicense:()=>J,itemToLicenseTemplate:()=>ne,itemToLicensee:()=>te,itemToNotification:()=>oe,itemToObject:()=>N,itemToPaymentMethod:()=>me,itemToProduct:()=>se,itemToProductModule:()=>ie,itemToToken:()=>ye,itemToTransaction:()=>ae,serialize:()=>C});var dr=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),We=dr;var mr=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),Re=mr;var pr=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Ne=pr;var lr=Object.freeze({WEBHOOK:"WEBHOOK"}),ve=lr;var fr=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),Y=fr;var gr=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),Xe=gr;var Tr=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),Ie=Tr;var Pr=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),Qe=Pr;var hr=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),xe=hr;var h={LicenseeSecretMode:We,LicenseType:Re,NotificationEvent:Ne,NotificationProtocol:ve,SecurityMode:Y,TimeVolumePeriod:Xe,TokenType:Ie,TransactionSource:Qe,TransactionStatus:xe,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:Re},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:Ie},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:ve,Event:Ne},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:xe},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var yr=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),_n=yr;var Er=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),Mn=Er;var Dr=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Un=Dr;var br=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),jn=br;var Rr=n=>{try{return JSON.parse(n)}catch{return n}},Nr=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=Rr(t)}),e},vr=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Bn(o))}),e},Bn=n=>n?{...Nr(n.property),...vr(n.list)}:{},N=Bn;var Vt=(n,e)=>Object.hasOwn(n,e),l=(n,e,o)=>{n[e]=o},p=(n,e,o)=>Vt(n,e)?n[e]:o;var C=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([r,s])=>{if(!t.includes(r)&&typeof s!="function")if(s===void 0)o[r]="";else if(typeof s=="string")o[r]=s;else if(s instanceof Date)o[r]=s.toISOString();else if(typeof s!="object"||s===null)o[r]=String(s);else try{o[r]=JSON.stringify(s)}catch{o[r]=String(s)}}),o};var Ir=function(n,e,o={},t){let r={set:[],get:[]};t?.get&&r.get.push(t.get),t?.set&&r.set.push(t.set);let s={set(i,a){l(n,i,a)},get(i,a){return p(n,i,a)},has(i){return Vt(n,i)},setProperty(i,a){this.set(i,a)},addProperty(i,a){this.set(i,a)},getProperty(i,a){return this.get(i,a)},hasProperty(i){return this.has(i)},setProperties(i){Object.entries(i).forEach(([a,d])=>{this.set(a,d)})},serialize(){return C(n)}};return new Proxy(n,{get(i,a,d){return Object.hasOwn(e,a)?e[a]:Object.hasOwn(s,a)?s[a]:(r.get.forEach(u=>{u(i,a,d)}),Reflect.get(i,a,d))},set(i,a,d,u){return r.set.forEach(m=>{m(i,a,d,u)}),Reflect.set(i,a,d,u)},getPrototypeOf(){return o.prototype||null}})},v=Ir;var kn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setPrice(t){l(e,"price",t)},getPrice(t){return p(e,"price",t)},setCurrency(t){l(e,"currency",t)},getCurrency(t){return p(e,"currency",t)},setProductNumber(t){l(e,"productNumber",t)},getProductNumber(t){return p(e,"productNumber",t)},setLicenseTemplateNumbers(t){l(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return p(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:r=[]}=e;r.splice(r.indexOf(t),1),e.licenseTemplateNumbers=r},getStaleLicenseTemplateNumbers(t){return p(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),C({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},kn)},Ze=kn;var ee=n=>{let e=N(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Ze(e)};var Fn=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return v(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Fn)},et=Fn;var tt=n=>et(N(n));var qn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setPrice(t){l(e,"price",t)},getPrice(t){return p(e,"price",t)},setCurrency(t){l(e,"currency",t)},getCurrency(t){return p(e,"currency",t)},setHidden(t){l(e,"hidden",t)},getHidden(t){return p(e,"hidden",t)},setLicenseeNumber(t){l(e,"licenseeNumber",t)},getLicenseeNumber(t){return p(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){l(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return p(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){l(e,"productModuleNumber",t)},getProductModuleNumber(t){return p(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},qn)},de=qn;var J=n=>{let e=N(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),de(e)};var Vn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setProductNumber(t){l(e,"productNumber",t)},getProductNumber(t){return p(e,"productNumber",t)},setMarkedForTransfer(t){l(e,"markedForTransfer",t)},getMarkedForTransfer(t){return p(e,"markedForTransfer",t)},serialize(){return C(e,{ignore:["inUse"]})}},Vn)},nt=Vn;var te=n=>nt(N(n));var Hn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setLicenseType(t){l(e,"licenseType",t)},getLicenseType(t){return p(e,"licenseType",t)},setPrice(t){l(e,"price",t)},getPrice(t){return p(e,"price",t)},setCurrency(t){l(e,"currency",t)},getCurrency(t){return p(e,"currency",t)},setAutomatic(t){l(e,"automatic",t)},getAutomatic(t){return p(e,"automatic",t)},setHidden(t){l(e,"hidden",t)},getHidden(t){return p(e,"hidden",t)},setHideLicenses(t){l(e,"hideLicenses",t)},getHideLicenses(t){return p(e,"hideLicenses",t)},setProductModuleNumber(t){l(e,"productModuleNumber",t)},getProductModuleNumber(t){return p(e,"productModuleNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},Hn)},ot=Hn;var ne=n=>ot(N(n));var $n=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setProtocol(t){l(e,"protocol",t)},getProtocol(t){return p(e,"protocol",t)},setEvents(t){l(e,"events",t)},getEvents(t){return p(e,"events",t)},addEvent(t){let r=this.getEvents([]);r.push(t),this.setEvents(r)},setPayload(t){l(e,"payload",t)},getPayload(t){return p(e,"payload",t)},setEndpoint(t){l(e,"endpoint",t)},getEndpoint(t){return p(e,"endpoint",t)},serialize(){let t=C(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},$n)},rt=$n;var oe=n=>{let e=N(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),rt(e)};var zn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)}},zn)},st=zn;var me=n=>st(N(n));var Yn=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setVersion(t){l(e,"version",t)},getVersion(t){return p(e,"version",t)},setDescription(t){l(e,"description",t)},getDescription(t){return p(e,"description",t)},setLicensingInfo(t){l(e,"licensingInfo",t)},getLicensingInfo(t){return p(e,"licensingInfo",t)},setLicenseeAutoCreate(t){l(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return p(e,"licenseeAutoCreate",t)},setDiscounts(t){l(e,"discounts",t)},getDiscounts(t){return p(e,"discounts",t)},addDiscount(t){let r=this.getDiscounts([]);r.push(t),this.setDiscounts(r)},removeDiscount(t){let r=this.getDiscounts();Array.isArray(r)&&r.length>0&&(r.splice(r.indexOf(t),1),this.setDiscounts(r))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=C(e,{ignore:["discounts","inUse"]}),r=this.getDiscounts();return r&&(t.discount=r.length>0?r.map(s=>s.toString()):""),t}},Yn)},it=Yn;function Le(n,e){return function(){return n.apply(e,arguments)}}var{toString:xr}=Object.prototype,{getPrototypeOf:$t}=Object,{iterator:ct,toStringTag:Jn}=Symbol,ut=(n=>e=>{let o=xr.call(e);return n[o]||(n[o]=o.slice(8,-1).toLowerCase())})(Object.create(null)),$=n=>(n=n.toLowerCase(),e=>ut(e)===n),dt=n=>e=>typeof e===n,{isArray:le}=Array,pe=dt("undefined");function Se(n){return n!==null&&!pe(n)&&n.constructor!==null&&!pe(n.constructor)&&B(n.constructor.isBuffer)&&n.constructor.isBuffer(n)}var Gn=$("ArrayBuffer");function Lr(n){let e;return typeof ArrayBuffer<"u"&&ArrayBuffer.isView?e=ArrayBuffer.isView(n):e=n&&n.buffer&&Gn(n.buffer),e}var Sr=dt("string"),B=dt("function"),Wn=dt("number"),Ce=n=>n!==null&&typeof n=="object",Cr=n=>n===!0||n===!1,at=n=>{if(ut(n)!=="object")return!1;let e=$t(n);return(e===null||e===Object.prototype||Object.getPrototypeOf(e)===null)&&!(Jn in n)&&!(ct in n)},Ar=n=>{if(!Ce(n)||Se(n))return!1;try{return Object.keys(n).length===0&&Object.getPrototypeOf(n)===Object.prototype}catch{return!1}},Or=$("Date"),wr=$("File"),_r=$("Blob"),Mr=$("FileList"),Ur=n=>Ce(n)&&B(n.pipe),jr=n=>{let e;return n&&(typeof FormData=="function"&&n instanceof FormData||B(n.append)&&((e=ut(n))==="formdata"||e==="object"&&B(n.toString)&&n.toString()==="[object FormData]"))},Br=$("URLSearchParams"),[kr,Fr,qr,Vr]=["ReadableStream","Request","Response","Headers"].map($),Hr=n=>n.trim?n.trim():n.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,"");function Ae(n,e,{allOwnKeys:o=!1}={}){if(n===null||typeof n>"u")return;let t,r;if(typeof n!="object"&&(n=[n]),le(n))for(t=0,r=n.length;t0;)if(r=o[t],e===r.toLowerCase())return r;return null}var re=typeof globalThis<"u"?globalThis:typeof self<"u"?self:typeof window<"u"?window:global,Qn=n=>!pe(n)&&n!==re;function Ht(){let{caseless:n,skipUndefined:e}=Qn(this)&&this||{},o={},t=(r,s)=>{if(s==="__proto__"||s==="constructor"||s==="prototype")return;let i=n&&Xn(o,s)||s;at(o[i])&&at(r)?o[i]=Ht(o[i],r):at(r)?o[i]=Ht({},r):le(r)?o[i]=r.slice():(!e||!pe(r))&&(o[i]=r)};for(let r=0,s=arguments.length;r(Ae(e,(r,s)=>{o&&B(r)?Object.defineProperty(n,s,{value:Le(r,o),writable:!0,enumerable:!0,configurable:!0}):Object.defineProperty(n,s,{value:r,writable:!0,enumerable:!0,configurable:!0})},{allOwnKeys:t}),n),zr=n=>(n.charCodeAt(0)===65279&&(n=n.slice(1)),n),Yr=(n,e,o,t)=>{n.prototype=Object.create(e.prototype,t),Object.defineProperty(n.prototype,"constructor",{value:n,writable:!0,enumerable:!1,configurable:!0}),Object.defineProperty(n,"super",{value:e.prototype}),o&&Object.assign(n.prototype,o)},Kr=(n,e,o,t)=>{let r,s,i,a={};if(e=e||{},n==null)return e;do{for(r=Object.getOwnPropertyNames(n),s=r.length;s-- >0;)i=r[s],(!t||t(i,n,e))&&!a[i]&&(e[i]=n[i],a[i]=!0);n=o!==!1&&$t(n)}while(n&&(!o||o(n,e))&&n!==Object.prototype);return e},Jr=(n,e,o)=>{n=String(n),(o===void 0||o>n.length)&&(o=n.length),o-=e.length;let t=n.indexOf(e,o);return t!==-1&&t===o},Gr=n=>{if(!n)return null;if(le(n))return n;let e=n.length;if(!Wn(e))return null;let o=new Array(e);for(;e-- >0;)o[e]=n[e];return o},Wr=(n=>e=>n&&e instanceof n)(typeof Uint8Array<"u"&&$t(Uint8Array)),Xr=(n,e)=>{let t=(n&&n[ct]).call(n),r;for(;(r=t.next())&&!r.done;){let s=r.value;e.call(n,s[0],s[1])}},Qr=(n,e)=>{let o,t=[];for(;(o=n.exec(e))!==null;)t.push(o);return t},Zr=$("HTMLFormElement"),es=n=>n.toLowerCase().replace(/[-_\s]([a-z\d])(\w*)/g,function(o,t,r){return t.toUpperCase()+r}),Kn=(({hasOwnProperty:n})=>(e,o)=>n.call(e,o))(Object.prototype),ts=$("RegExp"),Zn=(n,e)=>{let o=Object.getOwnPropertyDescriptors(n),t={};Ae(o,(r,s)=>{let i;(i=e(r,s,n))!==!1&&(t[s]=i||r)}),Object.defineProperties(n,t)},ns=n=>{Zn(n,(e,o)=>{if(B(n)&&["arguments","caller","callee"].indexOf(o)!==-1)return!1;let t=n[o];if(B(t)){if(e.enumerable=!1,"writable"in e){e.writable=!1;return}e.set||(e.set=()=>{throw Error("Can not rewrite read-only method '"+o+"'")})}})},os=(n,e)=>{let o={},t=r=>{r.forEach(s=>{o[s]=!0})};return le(n)?t(n):t(String(n).split(e)),o},rs=()=>{},ss=(n,e)=>n!=null&&Number.isFinite(n=+n)?n:e;function is(n){return!!(n&&B(n.append)&&n[Jn]==="FormData"&&n[ct])}var as=n=>{let e=new Array(10),o=(t,r)=>{if(Ce(t)){if(e.indexOf(t)>=0)return;if(Se(t))return t;if(!("toJSON"in t)){e[r]=t;let s=le(t)?[]:{};return Ae(t,(i,a)=>{let d=o(i,r+1);!pe(d)&&(s[a]=d)}),e[r]=void 0,s}}return t};return o(n,0)},cs=$("AsyncFunction"),us=n=>n&&(Ce(n)||B(n))&&B(n.then)&&B(n.catch),eo=((n,e)=>n?setImmediate:e?((o,t)=>(re.addEventListener("message",({source:r,data:s})=>{r===re&&s===o&&t.length&&t.shift()()},!1),r=>{t.push(r),re.postMessage(o,"*")}))(`axios@${Math.random()}`,[]):o=>setTimeout(o))(typeof setImmediate=="function",B(re.postMessage)),ds=typeof queueMicrotask<"u"?queueMicrotask.bind(re):typeof process<"u"&&process.nextTick||eo,ms=n=>n!=null&&B(n[ct]),c={isArray:le,isArrayBuffer:Gn,isBuffer:Se,isFormData:jr,isArrayBufferView:Lr,isString:Sr,isNumber:Wn,isBoolean:Cr,isObject:Ce,isPlainObject:at,isEmptyObject:Ar,isReadableStream:kr,isRequest:Fr,isResponse:qr,isHeaders:Vr,isUndefined:pe,isDate:Or,isFile:wr,isBlob:_r,isRegExp:ts,isFunction:B,isStream:Ur,isURLSearchParams:Br,isTypedArray:Wr,isFileList:Mr,forEach:Ae,merge:Ht,extend:$r,trim:Hr,stripBOM:zr,inherits:Yr,toFlatObject:Kr,kindOf:ut,kindOfTest:$,endsWith:Jr,toArray:Gr,forEachEntry:Xr,matchAll:Qr,isHTMLForm:Zr,hasOwnProperty:Kn,hasOwnProp:Kn,reduceDescriptors:Zn,freezeMethods:ns,toObjectSet:os,toCamelCase:es,noop:rs,toFiniteNumber:ss,findKey:Xn,global:re,isContextDefined:Qn,isSpecCompliantForm:is,toJSONObject:as,isAsyncFn:cs,isThenable:us,setImmediate:eo,asap:ds,isIterable:ms};var M=class n extends Error{static from(e,o,t,r,s,i){let a=new n(e.message,o||e.code,t,r,s);return a.cause=e,a.name=e.name,i&&Object.assign(a,i),a}constructor(e,o,t,r,s){super(e),this.name="AxiosError",this.isAxiosError=!0,o&&(this.code=o),t&&(this.config=t),r&&(this.request=r),s&&(this.response=s,this.status=s.status)}toJSON(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:c.toJSONObject(this.config),code:this.code,status:this.status}}};M.ERR_BAD_OPTION_VALUE="ERR_BAD_OPTION_VALUE";M.ERR_BAD_OPTION="ERR_BAD_OPTION";M.ECONNABORTED="ECONNABORTED";M.ETIMEDOUT="ETIMEDOUT";M.ERR_NETWORK="ERR_NETWORK";M.ERR_FR_TOO_MANY_REDIRECTS="ERR_FR_TOO_MANY_REDIRECTS";M.ERR_DEPRECATED="ERR_DEPRECATED";M.ERR_BAD_RESPONSE="ERR_BAD_RESPONSE";M.ERR_BAD_REQUEST="ERR_BAD_REQUEST";M.ERR_CANCELED="ERR_CANCELED";M.ERR_NOT_SUPPORT="ERR_NOT_SUPPORT";M.ERR_INVALID_URL="ERR_INVALID_URL";var E=M;var mt=null;function zt(n){return c.isPlainObject(n)||c.isArray(n)}function no(n){return c.endsWith(n,"[]")?n.slice(0,-2):n}function to(n,e,o){return n?n.concat(e).map(function(r,s){return r=no(r),!o&&s?"["+r+"]":r}).join(o?".":""):e}function ps(n){return c.isArray(n)&&!n.some(zt)}var ls=c.toFlatObject(c,{},null,function(e){return/^is[A-Z]/.test(e)});function fs(n,e,o){if(!c.isObject(n))throw new TypeError("target must be an object");e=e||new(mt||FormData),o=c.toFlatObject(o,{metaTokens:!0,dots:!1,indexes:!1},!1,function(y,P){return!c.isUndefined(P[y])});let t=o.metaTokens,r=o.visitor||m,s=o.dots,i=o.indexes,d=(o.Blob||typeof Blob<"u"&&Blob)&&c.isSpecCompliantForm(e);if(!c.isFunction(r))throw new TypeError("visitor must be a function");function u(f){if(f===null)return"";if(c.isDate(f))return f.toISOString();if(c.isBoolean(f))return f.toString();if(!d&&c.isBlob(f))throw new E("Blob is not supported. Use a Buffer instead.");return c.isArrayBuffer(f)||c.isTypedArray(f)?d&&typeof Blob=="function"?new Blob([f]):Buffer.from(f):f}function m(f,y,P){let A=f;if(f&&!P&&typeof f=="object"){if(c.endsWith(y,"{}"))y=t?y:y.slice(0,-2),f=JSON.stringify(f);else if(c.isArray(f)&&ps(f)||(c.isFileList(f)||c.endsWith(y,"[]"))&&(A=c.toArray(f)))return y=no(y),A.forEach(function(_,U){!(c.isUndefined(_)||_===null)&&e.append(i===!0?to([y],U,s):i===null?y:y+"[]",u(_))}),!1}return zt(f)?!0:(e.append(to(P,y,s),u(f)),!1)}let T=[],b=Object.assign(ls,{defaultVisitor:m,convertValue:u,isVisitable:zt});function S(f,y){if(!c.isUndefined(f)){if(T.indexOf(f)!==-1)throw Error("Circular reference detected in "+y.join("."));T.push(f),c.forEach(f,function(A,F){(!(c.isUndefined(A)||A===null)&&r.call(e,A,c.isString(F)?F.trim():F,y,b))===!0&&S(A,y?y.concat(F):[F])}),T.pop()}}if(!c.isObject(n))throw new TypeError("data must be an object");return S(n),e}var X=fs;function oo(n){let e={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+","%00":"\0"};return encodeURIComponent(n).replace(/[!'()~]|%20|%00/g,function(t){return e[t]})}function ro(n,e){this._pairs=[],n&&X(n,this,e)}var so=ro.prototype;so.append=function(e,o){this._pairs.push([e,o])};so.toString=function(e){let o=e?function(t){return e.call(this,t,oo)}:oo;return this._pairs.map(function(r){return o(r[0])+"="+o(r[1])},"").join("&")};var pt=ro;function gs(n){return encodeURIComponent(n).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+")}function Oe(n,e,o){if(!e)return n;let t=o&&o.encode||gs,r=c.isFunction(o)?{serialize:o}:o,s=r&&r.serialize,i;if(s?i=s(e,r):i=c.isURLSearchParams(e)?e.toString():new pt(e,r).toString(t),i){let a=n.indexOf("#");a!==-1&&(n=n.slice(0,a)),n+=(n.indexOf("?")===-1?"?":"&")+i}return n}var Yt=class{constructor(){this.handlers=[]}use(e,o,t){return this.handlers.push({fulfilled:e,rejected:o,synchronous:t?t.synchronous:!1,runWhen:t?t.runWhen:null}),this.handlers.length-1}eject(e){this.handlers[e]&&(this.handlers[e]=null)}clear(){this.handlers&&(this.handlers=[])}forEach(e){c.forEach(this.handlers,function(t){t!==null&&e(t)})}},Kt=Yt;var fe={silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1,legacyInterceptorReqResOrdering:!0};var io=typeof URLSearchParams<"u"?URLSearchParams:pt;var ao=typeof FormData<"u"?FormData:null;var co=typeof Blob<"u"?Blob:null;var uo={isBrowser:!0,classes:{URLSearchParams:io,FormData:ao,Blob:co},protocols:["http","https","file","blob","url","data"]};var Wt={};wn(Wt,{hasBrowserEnv:()=>Gt,hasStandardBrowserEnv:()=>Ts,hasStandardBrowserWebWorkerEnv:()=>Ps,navigator:()=>Jt,origin:()=>hs});var Gt=typeof window<"u"&&typeof document<"u",Jt=typeof navigator=="object"&&navigator||void 0,Ts=Gt&&(!Jt||["ReactNative","NativeScript","NS"].indexOf(Jt.product)<0),Ps=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&typeof self.importScripts=="function",hs=Gt&&window.location.href||"http://localhost";var L={...Wt,...uo};function Xt(n,e){return X(n,new L.classes.URLSearchParams,{visitor:function(o,t,r,s){return L.isNode&&c.isBuffer(o)?(this.append(t,o.toString("base64")),!1):s.defaultVisitor.apply(this,arguments)},...e})}function ys(n){return c.matchAll(/\w+|\[(\w*)]/g,n).map(e=>e[0]==="[]"?"":e[1]||e[0])}function Es(n){let e={},o=Object.keys(n),t,r=o.length,s;for(t=0;t=o.length;return i=!i&&c.isArray(r)?r.length:i,d?(c.hasOwnProp(r,i)?r[i]=[r[i],t]:r[i]=t,!a):((!r[i]||!c.isObject(r[i]))&&(r[i]=[]),e(o,t,r[i],s)&&c.isArray(r[i])&&(r[i]=Es(r[i])),!a)}if(c.isFormData(n)&&c.isFunction(n.entries)){let o={};return c.forEachEntry(n,(t,r)=>{e(ys(t),r,o,0)}),o}return null}var lt=Ds;function bs(n,e,o){if(c.isString(n))try{return(e||JSON.parse)(n),c.trim(n)}catch(t){if(t.name!=="SyntaxError")throw t}return(o||JSON.stringify)(n)}var Qt={transitional:fe,adapter:["xhr","http","fetch"],transformRequest:[function(e,o){let t=o.getContentType()||"",r=t.indexOf("application/json")>-1,s=c.isObject(e);if(s&&c.isHTMLForm(e)&&(e=new FormData(e)),c.isFormData(e))return r?JSON.stringify(lt(e)):e;if(c.isArrayBuffer(e)||c.isBuffer(e)||c.isStream(e)||c.isFile(e)||c.isBlob(e)||c.isReadableStream(e))return e;if(c.isArrayBufferView(e))return e.buffer;if(c.isURLSearchParams(e))return o.setContentType("application/x-www-form-urlencoded;charset=utf-8",!1),e.toString();let a;if(s){if(t.indexOf("application/x-www-form-urlencoded")>-1)return Xt(e,this.formSerializer).toString();if((a=c.isFileList(e))||t.indexOf("multipart/form-data")>-1){let d=this.env&&this.env.FormData;return X(a?{"files[]":e}:e,d&&new d,this.formSerializer)}}return s||r?(o.setContentType("application/json",!1),bs(e)):e}],transformResponse:[function(e){let o=this.transitional||Qt.transitional,t=o&&o.forcedJSONParsing,r=this.responseType==="json";if(c.isResponse(e)||c.isReadableStream(e))return e;if(e&&c.isString(e)&&(t&&!this.responseType||r)){let i=!(o&&o.silentJSONParsing)&&r;try{return JSON.parse(e,this.parseReviver)}catch(a){if(i)throw a.name==="SyntaxError"?E.from(a,E.ERR_BAD_RESPONSE,this,null,this.response):a}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,env:{FormData:L.classes.FormData,Blob:L.classes.Blob},validateStatus:function(e){return e>=200&&e<300},headers:{common:{Accept:"application/json, text/plain, */*","Content-Type":void 0}}};c.forEach(["delete","get","head","post","put","patch"],n=>{Qt.headers[n]={}});var ge=Qt;var Rs=c.toObjectSet(["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"]),mo=n=>{let e={},o,t,r;return n&&n.split(` +`).forEach(function(i){r=i.indexOf(":"),o=i.substring(0,r).trim().toLowerCase(),t=i.substring(r+1).trim(),!(!o||e[o]&&Rs[o])&&(o==="set-cookie"?e[o]?e[o].push(t):e[o]=[t]:e[o]=e[o]?e[o]+", "+t:t)}),e};var po=Symbol("internals");function we(n){return n&&String(n).trim().toLowerCase()}function ft(n){return n===!1||n==null?n:c.isArray(n)?n.map(ft):String(n)}function Ns(n){let e=Object.create(null),o=/([^\s,;=]+)\s*(?:=\s*([^,;]+))?/g,t;for(;t=o.exec(n);)e[t[1]]=t[2];return e}var vs=n=>/^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(n.trim());function Zt(n,e,o,t,r){if(c.isFunction(t))return t.call(this,e,o);if(r&&(e=o),!!c.isString(e)){if(c.isString(t))return e.indexOf(t)!==-1;if(c.isRegExp(t))return t.test(e)}}function Is(n){return n.trim().toLowerCase().replace(/([a-z\d])(\w*)/g,(e,o,t)=>o.toUpperCase()+t)}function xs(n,e){let o=c.toCamelCase(" "+e);["get","set","has"].forEach(t=>{Object.defineProperty(n,t+o,{value:function(r,s,i){return this[t].call(this,e,r,s,i)},configurable:!0})})}var Te=class{constructor(e){e&&this.set(e)}set(e,o,t){let r=this;function s(a,d,u){let m=we(d);if(!m)throw new Error("header name must be a non-empty string");let T=c.findKey(r,m);(!T||r[T]===void 0||u===!0||u===void 0&&r[T]!==!1)&&(r[T||d]=ft(a))}let i=(a,d)=>c.forEach(a,(u,m)=>s(u,m,d));if(c.isPlainObject(e)||e instanceof this.constructor)i(e,o);else if(c.isString(e)&&(e=e.trim())&&!vs(e))i(mo(e),o);else if(c.isObject(e)&&c.isIterable(e)){let a={},d,u;for(let m of e){if(!c.isArray(m))throw TypeError("Object iterator must return a key-value pair");a[u=m[0]]=(d=a[u])?c.isArray(d)?[...d,m[1]]:[d,m[1]]:m[1]}i(a,o)}else e!=null&&s(o,e,t);return this}get(e,o){if(e=we(e),e){let t=c.findKey(this,e);if(t){let r=this[t];if(!o)return r;if(o===!0)return Ns(r);if(c.isFunction(o))return o.call(this,r,t);if(c.isRegExp(o))return o.exec(r);throw new TypeError("parser must be boolean|regexp|function")}}}has(e,o){if(e=we(e),e){let t=c.findKey(this,e);return!!(t&&this[t]!==void 0&&(!o||Zt(this,this[t],t,o)))}return!1}delete(e,o){let t=this,r=!1;function s(i){if(i=we(i),i){let a=c.findKey(t,i);a&&(!o||Zt(t,t[a],a,o))&&(delete t[a],r=!0)}}return c.isArray(e)?e.forEach(s):s(e),r}clear(e){let o=Object.keys(this),t=o.length,r=!1;for(;t--;){let s=o[t];(!e||Zt(this,this[s],s,e,!0))&&(delete this[s],r=!0)}return r}normalize(e){let o=this,t={};return c.forEach(this,(r,s)=>{let i=c.findKey(t,s);if(i){o[i]=ft(r),delete o[s];return}let a=e?Is(s):String(s).trim();a!==s&&delete o[s],o[a]=ft(r),t[a]=!0}),this}concat(...e){return this.constructor.concat(this,...e)}toJSON(e){let o=Object.create(null);return c.forEach(this,(t,r)=>{t!=null&&t!==!1&&(o[r]=e&&c.isArray(t)?t.join(", "):t)}),o}[Symbol.iterator](){return Object.entries(this.toJSON())[Symbol.iterator]()}toString(){return Object.entries(this.toJSON()).map(([e,o])=>e+": "+o).join(` +`)}getSetCookie(){return this.get("set-cookie")||[]}get[Symbol.toStringTag](){return"AxiosHeaders"}static from(e){return e instanceof this?e:new this(e)}static concat(e,...o){let t=new this(e);return o.forEach(r=>t.set(r)),t}static accessor(e){let t=(this[po]=this[po]={accessors:{}}).accessors,r=this.prototype;function s(i){let a=we(i);t[a]||(xs(r,i),t[a]=!0)}return c.isArray(e)?e.forEach(s):s(e),this}};Te.accessor(["Content-Type","Content-Length","Accept","Accept-Encoding","User-Agent","Authorization"]);c.reduceDescriptors(Te.prototype,({value:n},e)=>{let o=e[0].toUpperCase()+e.slice(1);return{get:()=>n,set(t){this[o]=t}}});c.freezeMethods(Te);var w=Te;function _e(n,e){let o=this||ge,t=e||o,r=w.from(t.headers),s=t.data;return c.forEach(n,function(a){s=a.call(o,s,r.normalize(),e?e.status:void 0)}),r.normalize(),s}function Me(n){return!!(n&&n.__CANCEL__)}var en=class extends E{constructor(e,o,t){super(e??"canceled",E.ERR_CANCELED,o,t),this.name="CanceledError",this.__CANCEL__=!0}},K=en;function Ue(n,e,o){let t=o.config.validateStatus;!o.status||!t||t(o.status)?n(o):e(new E("Request failed with status code "+o.status,[E.ERR_BAD_REQUEST,E.ERR_BAD_RESPONSE][Math.floor(o.status/100)-4],o.config,o.request,o))}function tn(n){let e=/^([-+\w]{1,25})(:?\/\/|:)/.exec(n);return e&&e[1]||""}function Ls(n,e){n=n||10;let o=new Array(n),t=new Array(n),r=0,s=0,i;return e=e!==void 0?e:1e3,function(d){let u=Date.now(),m=t[s];i||(i=u),o[r]=d,t[r]=u;let T=s,b=0;for(;T!==r;)b+=o[T++],T=T%n;if(r=(r+1)%n,r===s&&(s=(s+1)%n),u-i{o=m,r=null,s&&(clearTimeout(s),s=null),n(...u)};return[(...u)=>{let m=Date.now(),T=m-o;T>=t?i(u,m):(r=u,s||(s=setTimeout(()=>{s=null,i(r)},t-T)))},()=>r&&i(r)]}var fo=Ss;var Pe=(n,e,o=3)=>{let t=0,r=lo(50,250);return fo(s=>{let i=s.loaded,a=s.lengthComputable?s.total:void 0,d=i-t,u=r(d),m=i<=a;t=i;let T={loaded:i,total:a,progress:a?i/a:void 0,bytes:d,rate:u||void 0,estimated:u&&a&&m?(a-i)/u:void 0,event:s,lengthComputable:a!=null,[e?"download":"upload"]:!0};n(T)},o)},nn=(n,e)=>{let o=n!=null;return[t=>e[0]({lengthComputable:o,total:n,loaded:t}),e[1]]},on=n=>(...e)=>c.asap(()=>n(...e));var go=L.hasStandardBrowserEnv?((n,e)=>o=>(o=new URL(o,L.origin),n.protocol===o.protocol&&n.host===o.host&&(e||n.port===o.port)))(new URL(L.origin),L.navigator&&/(msie|trident)/i.test(L.navigator.userAgent)):()=>!0;var To=L.hasStandardBrowserEnv?{write(n,e,o,t,r,s,i){if(typeof document>"u")return;let a=[`${n}=${encodeURIComponent(e)}`];c.isNumber(o)&&a.push(`expires=${new Date(o).toUTCString()}`),c.isString(t)&&a.push(`path=${t}`),c.isString(r)&&a.push(`domain=${r}`),s===!0&&a.push("secure"),c.isString(i)&&a.push(`SameSite=${i}`),document.cookie=a.join("; ")},read(n){if(typeof document>"u")return null;let e=document.cookie.match(new RegExp("(?:^|; )"+n+"=([^;]*)"));return e?decodeURIComponent(e[1]):null},remove(n){this.write(n,"",Date.now()-864e5,"/")}}:{write(){},read(){return null},remove(){}};function rn(n){return typeof n!="string"?!1:/^([a-z][a-z\d+\-.]*:)?\/\//i.test(n)}function sn(n,e){return e?n.replace(/\/?\/$/,"")+"/"+e.replace(/^\/+/,""):n}function je(n,e,o){let t=!rn(e);return n&&(t||o==!1)?sn(n,e):e}var Po=n=>n instanceof w?{...n}:n;function z(n,e){e=e||{};let o={};function t(u,m,T,b){return c.isPlainObject(u)&&c.isPlainObject(m)?c.merge.call({caseless:b},u,m):c.isPlainObject(m)?c.merge({},m):c.isArray(m)?m.slice():m}function r(u,m,T,b){if(c.isUndefined(m)){if(!c.isUndefined(u))return t(void 0,u,T,b)}else return t(u,m,T,b)}function s(u,m){if(!c.isUndefined(m))return t(void 0,m)}function i(u,m){if(c.isUndefined(m)){if(!c.isUndefined(u))return t(void 0,u)}else return t(void 0,m)}function a(u,m,T){if(T in e)return t(u,m);if(T in n)return t(void 0,u)}let d={url:s,method:s,data:s,baseURL:i,transformRequest:i,transformResponse:i,paramsSerializer:i,timeout:i,timeoutMessage:i,withCredentials:i,withXSRFToken:i,adapter:i,responseType:i,xsrfCookieName:i,xsrfHeaderName:i,onUploadProgress:i,onDownloadProgress:i,decompress:i,maxContentLength:i,maxBodyLength:i,beforeRedirect:i,transport:i,httpAgent:i,httpsAgent:i,cancelToken:i,socketPath:i,responseEncoding:i,validateStatus:a,headers:(u,m,T)=>r(Po(u),Po(m),T,!0)};return c.forEach(Object.keys({...n,...e}),function(m){if(m==="__proto__"||m==="constructor"||m==="prototype")return;let T=c.hasOwnProp(d,m)?d[m]:r,b=T(n[m],e[m],m);c.isUndefined(b)&&T!==a||(o[m]=b)}),o}var gt=n=>{let e=z({},n),{data:o,withXSRFToken:t,xsrfHeaderName:r,xsrfCookieName:s,headers:i,auth:a}=e;if(e.headers=i=w.from(i),e.url=Oe(je(e.baseURL,e.url,e.allowAbsoluteUrls),n.params,n.paramsSerializer),a&&i.set("Authorization","Basic "+btoa((a.username||"")+":"+(a.password?unescape(encodeURIComponent(a.password)):""))),c.isFormData(o)){if(L.hasStandardBrowserEnv||L.hasStandardBrowserWebWorkerEnv)i.setContentType(void 0);else if(c.isFunction(o.getHeaders)){let d=o.getHeaders(),u=["content-type","content-length"];Object.entries(d).forEach(([m,T])=>{u.includes(m.toLowerCase())&&i.set(m,T)})}}if(L.hasStandardBrowserEnv&&(t&&c.isFunction(t)&&(t=t(e)),t||t!==!1&&go(e.url))){let d=r&&s&&To.read(s);d&&i.set(r,d)}return e};var Cs=typeof XMLHttpRequest<"u",ho=Cs&&function(n){return new Promise(function(o,t){let r=gt(n),s=r.data,i=w.from(r.headers).normalize(),{responseType:a,onUploadProgress:d,onDownloadProgress:u}=r,m,T,b,S,f;function y(){S&&S(),f&&f(),r.cancelToken&&r.cancelToken.unsubscribe(m),r.signal&&r.signal.removeEventListener("abort",m)}let P=new XMLHttpRequest;P.open(r.method.toUpperCase(),r.url,!0),P.timeout=r.timeout;function A(){if(!P)return;let _=w.from("getAllResponseHeaders"in P&&P.getAllResponseHeaders()),H={data:!a||a==="text"||a==="json"?P.responseText:P.response,status:P.status,statusText:P.statusText,headers:_,config:n,request:P};Ue(function(q){o(q),y()},function(q){t(q),y()},H),P=null}"onloadend"in P?P.onloadend=A:P.onreadystatechange=function(){!P||P.readyState!==4||P.status===0&&!(P.responseURL&&P.responseURL.indexOf("file:")===0)||setTimeout(A)},P.onabort=function(){P&&(t(new E("Request aborted",E.ECONNABORTED,n,P)),P=null)},P.onerror=function(U){let H=U&&U.message?U.message:"Network Error",Q=new E(H,E.ERR_NETWORK,n,P);Q.event=U||null,t(Q),P=null},P.ontimeout=function(){let U=r.timeout?"timeout of "+r.timeout+"ms exceeded":"timeout exceeded",H=r.transitional||fe;r.timeoutErrorMessage&&(U=r.timeoutErrorMessage),t(new E(U,H.clarifyTimeoutError?E.ETIMEDOUT:E.ECONNABORTED,n,P)),P=null},s===void 0&&i.setContentType(null),"setRequestHeader"in P&&c.forEach(i.toJSON(),function(U,H){P.setRequestHeader(H,U)}),c.isUndefined(r.withCredentials)||(P.withCredentials=!!r.withCredentials),a&&a!=="json"&&(P.responseType=r.responseType),u&&([b,f]=Pe(u,!0),P.addEventListener("progress",b)),d&&P.upload&&([T,S]=Pe(d),P.upload.addEventListener("progress",T),P.upload.addEventListener("loadend",S)),(r.cancelToken||r.signal)&&(m=_=>{P&&(t(!_||_.type?new K(null,n,P):_),P.abort(),P=null)},r.cancelToken&&r.cancelToken.subscribe(m),r.signal&&(r.signal.aborted?m():r.signal.addEventListener("abort",m)));let F=tn(r.url);if(F&&L.protocols.indexOf(F)===-1){t(new E("Unsupported protocol "+F+":",E.ERR_BAD_REQUEST,n));return}P.send(s||null)})};var As=(n,e)=>{let{length:o}=n=n?n.filter(Boolean):[];if(e||o){let t=new AbortController,r,s=function(u){if(!r){r=!0,a();let m=u instanceof Error?u:this.reason;t.abort(m instanceof E?m:new K(m instanceof Error?m.message:m))}},i=e&&setTimeout(()=>{i=null,s(new E(`timeout of ${e}ms exceeded`,E.ETIMEDOUT))},e),a=()=>{n&&(i&&clearTimeout(i),i=null,n.forEach(u=>{u.unsubscribe?u.unsubscribe(s):u.removeEventListener("abort",s)}),n=null)};n.forEach(u=>u.addEventListener("abort",s));let{signal:d}=t;return d.unsubscribe=()=>c.asap(a),d}},yo=As;var Os=function*(n,e){let o=n.byteLength;if(!e||o{let r=ws(n,e),s=0,i,a=d=>{i||(i=!0,t&&t(d))};return new ReadableStream({async pull(d){try{let{done:u,value:m}=await r.next();if(u){a(),d.close();return}let T=m.byteLength;if(o){let b=s+=T;o(b)}d.enqueue(new Uint8Array(m))}catch(u){throw a(u),u}},cancel(d){return a(d),r.return()}},{highWaterMark:2})};var Eo=64*1024,{isFunction:Tt}=c,Ms=(({Request:n,Response:e})=>({Request:n,Response:e}))(c.global),{ReadableStream:Do,TextEncoder:bo}=c.global,Ro=(n,...e)=>{try{return!!n(...e)}catch{return!1}},Us=n=>{n=c.merge.call({skipUndefined:!0},Ms,n);let{fetch:e,Request:o,Response:t}=n,r=e?Tt(e):typeof fetch=="function",s=Tt(o),i=Tt(t);if(!r)return!1;let a=r&&Tt(Do),d=r&&(typeof bo=="function"?(f=>y=>f.encode(y))(new bo):async f=>new Uint8Array(await new o(f).arrayBuffer())),u=s&&a&&Ro(()=>{let f=!1,y=new o(L.origin,{body:new Do,method:"POST",get duplex(){return f=!0,"half"}}).headers.has("Content-Type");return f&&!y}),m=i&&a&&Ro(()=>c.isReadableStream(new t("").body)),T={stream:m&&(f=>f.body)};r&&["text","arrayBuffer","blob","formData","stream"].forEach(f=>{!T[f]&&(T[f]=(y,P)=>{let A=y&&y[f];if(A)return A.call(y);throw new E(`Response type '${f}' is not supported`,E.ERR_NOT_SUPPORT,P)})});let b=async f=>{if(f==null)return 0;if(c.isBlob(f))return f.size;if(c.isSpecCompliantForm(f))return(await new o(L.origin,{method:"POST",body:f}).arrayBuffer()).byteLength;if(c.isArrayBufferView(f)||c.isArrayBuffer(f))return f.byteLength;if(c.isURLSearchParams(f)&&(f=f+""),c.isString(f))return(await d(f)).byteLength},S=async(f,y)=>{let P=c.toFiniteNumber(f.getContentLength());return P??b(y)};return async f=>{let{url:y,method:P,data:A,signal:F,cancelToken:_,timeout:U,onDownloadProgress:H,onUploadProgress:Q,responseType:q,headers:kt,withCredentials:Ke="same-origin",fetchOptions:xn}=gt(f),Ln=e||fetch;q=q?(q+"").toLowerCase():"text";let Je=yo([F,_&&_.toAbortSignal()],U),be=null,Z=Je&&Je.unsubscribe&&(()=>{Je.unsubscribe()}),Sn;try{if(Q&&u&&P!=="get"&&P!=="head"&&(Sn=await S(kt,A))!==0){let W=new o(y,{method:"POST",body:A,duplex:"half"}),ue;if(c.isFormData(A)&&(ue=W.headers.get("content-type"))&&kt.setContentType(ue),W.body){let[Ft,Ge]=nn(Sn,Pe(on(Q)));A=an(W.body,Eo,Ft,Ge)}}c.isString(Ke)||(Ke=Ke?"include":"omit");let j=s&&"credentials"in o.prototype,Cn={...xn,signal:Je,method:P.toUpperCase(),headers:kt.normalize().toJSON(),body:A,duplex:"half",credentials:j?Ke:void 0};be=s&&new o(y,Cn);let G=await(s?Ln(be,xn):Ln(y,Cn)),An=m&&(q==="stream"||q==="response");if(m&&(H||An&&Z)){let W={};["status","statusText","headers"].forEach(On=>{W[On]=G[On]});let ue=c.toFiniteNumber(G.headers.get("content-length")),[Ft,Ge]=H&&nn(ue,Pe(on(H),!0))||[];G=new t(an(G.body,Eo,Ft,()=>{Ge&&Ge(),Z&&Z()}),W)}q=q||"text";let rr=await T[c.findKey(T,q)||"text"](G,f);return!An&&Z&&Z(),await new Promise((W,ue)=>{Ue(W,ue,{data:rr,headers:w.from(G.headers),status:G.status,statusText:G.statusText,config:f,request:be})})}catch(j){throw Z&&Z(),j&&j.name==="TypeError"&&/Load failed|fetch/i.test(j.message)?Object.assign(new E("Network Error",E.ERR_NETWORK,f,be,j&&j.response),{cause:j.cause||j}):E.from(j,j&&j.code,f,be,j&&j.response)}}},js=new Map,cn=n=>{let e=n&&n.env||{},{fetch:o,Request:t,Response:r}=e,s=[t,r,o],i=s.length,a=i,d,u,m=js;for(;a--;)d=s[a],u=m.get(d),u===void 0&&m.set(d,u=a?new Map:Us(e)),m=u;return u},wu=cn();var un={http:mt,xhr:ho,fetch:{get:cn}};c.forEach(un,(n,e)=>{if(n){try{Object.defineProperty(n,"name",{value:e})}catch{}Object.defineProperty(n,"adapterName",{value:e})}});var No=n=>`- ${n}`,ks=n=>c.isFunction(n)||n===null||n===!1;function Fs(n,e){n=c.isArray(n)?n:[n];let{length:o}=n,t,r,s={};for(let i=0;i`adapter ${d} `+(u===!1?"is not supported by the environment":"is not available in the build")),a=o?i.length>1?`since : +`+i.map(No).join(` +`):" "+No(i[0]):"as no adapter specified";throw new E("There is no suitable adapter to dispatch the request "+a,"ERR_NOT_SUPPORT")}return r}var Pt={getAdapter:Fs,adapters:un};function dn(n){if(n.cancelToken&&n.cancelToken.throwIfRequested(),n.signal&&n.signal.aborted)throw new K(null,n)}function ht(n){return dn(n),n.headers=w.from(n.headers),n.data=_e.call(n,n.transformRequest),["post","put","patch"].indexOf(n.method)!==-1&&n.headers.setContentType("application/x-www-form-urlencoded",!1),Pt.getAdapter(n.adapter||ge.adapter,n)(n).then(function(t){return dn(n),t.data=_e.call(n,n.transformResponse,t),t.headers=w.from(t.headers),t},function(t){return Me(t)||(dn(n),t&&t.response&&(t.response.data=_e.call(n,n.transformResponse,t.response),t.response.headers=w.from(t.response.headers))),Promise.reject(t)})}var yt="1.13.5";var Et={};["object","boolean","number","function","string","symbol"].forEach((n,e)=>{Et[n]=function(t){return typeof t===n||"a"+(e<1?"n ":" ")+n}});var vo={};Et.transitional=function(e,o,t){function r(s,i){return"[Axios v"+yt+"] Transitional option '"+s+"'"+i+(t?". "+t:"")}return(s,i,a)=>{if(e===!1)throw new E(r(i," has been removed"+(o?" in "+o:"")),E.ERR_DEPRECATED);return o&&!vo[i]&&(vo[i]=!0,console.warn(r(i," has been deprecated since v"+o+" and will be removed in the near future"))),e?e(s,i,a):!0}};Et.spelling=function(e){return(o,t)=>(console.warn(`${t} is likely a misspelling of ${e}`),!0)};function qs(n,e,o){if(typeof n!="object")throw new E("options must be an object",E.ERR_BAD_OPTION_VALUE);let t=Object.keys(n),r=t.length;for(;r-- >0;){let s=t[r],i=e[s];if(i){let a=n[s],d=a===void 0||i(a,s,n);if(d!==!0)throw new E("option "+s+" must be "+d,E.ERR_BAD_OPTION_VALUE);continue}if(o!==!0)throw new E("Unknown option "+s,E.ERR_BAD_OPTION)}}var Be={assertOptions:qs,validators:Et};var V=Be.validators,he=class{constructor(e){this.defaults=e||{},this.interceptors={request:new Kt,response:new Kt}}async request(e,o){try{return await this._request(e,o)}catch(t){if(t instanceof Error){let r={};Error.captureStackTrace?Error.captureStackTrace(r):r=new Error;let s=r.stack?r.stack.replace(/^.+\n/,""):"";try{t.stack?s&&!String(t.stack).endsWith(s.replace(/^.+\n.+\n/,""))&&(t.stack+=` +`+s):t.stack=s}catch{}}throw t}}_request(e,o){typeof e=="string"?(o=o||{},o.url=e):o=e||{},o=z(this.defaults,o);let{transitional:t,paramsSerializer:r,headers:s}=o;t!==void 0&&Be.assertOptions(t,{silentJSONParsing:V.transitional(V.boolean),forcedJSONParsing:V.transitional(V.boolean),clarifyTimeoutError:V.transitional(V.boolean),legacyInterceptorReqResOrdering:V.transitional(V.boolean)},!1),r!=null&&(c.isFunction(r)?o.paramsSerializer={serialize:r}:Be.assertOptions(r,{encode:V.function,serialize:V.function},!0)),o.allowAbsoluteUrls!==void 0||(this.defaults.allowAbsoluteUrls!==void 0?o.allowAbsoluteUrls=this.defaults.allowAbsoluteUrls:o.allowAbsoluteUrls=!0),Be.assertOptions(o,{baseUrl:V.spelling("baseURL"),withXsrfToken:V.spelling("withXSRFToken")},!0),o.method=(o.method||this.defaults.method||"get").toLowerCase();let i=s&&c.merge(s.common,s[o.method]);s&&c.forEach(["delete","get","head","post","put","patch","common"],f=>{delete s[f]}),o.headers=w.concat(i,s);let a=[],d=!0;this.interceptors.request.forEach(function(y){if(typeof y.runWhen=="function"&&y.runWhen(o)===!1)return;d=d&&y.synchronous;let P=o.transitional||fe;P&&P.legacyInterceptorReqResOrdering?a.unshift(y.fulfilled,y.rejected):a.push(y.fulfilled,y.rejected)});let u=[];this.interceptors.response.forEach(function(y){u.push(y.fulfilled,y.rejected)});let m,T=0,b;if(!d){let f=[ht.bind(this),void 0];for(f.unshift(...a),f.push(...u),b=f.length,m=Promise.resolve(o);T{if(!t._listeners)return;let s=t._listeners.length;for(;s-- >0;)t._listeners[s](r);t._listeners=null}),this.promise.then=r=>{let s,i=new Promise(a=>{t.subscribe(a),s=a}).then(r);return i.cancel=function(){t.unsubscribe(s)},i},e(function(s,i,a){t.reason||(t.reason=new K(s,i,a),o(t.reason))})}throwIfRequested(){if(this.reason)throw this.reason}subscribe(e){if(this.reason){e(this.reason);return}this._listeners?this._listeners.push(e):this._listeners=[e]}unsubscribe(e){if(!this._listeners)return;let o=this._listeners.indexOf(e);o!==-1&&this._listeners.splice(o,1)}toAbortSignal(){let e=new AbortController,o=t=>{e.abort(t)};return this.subscribe(o),e.signal.unsubscribe=()=>this.unsubscribe(o),e.signal}static source(){let e;return{token:new n(function(r){e=r}),cancel:e}}},Io=mn;function pn(n){return function(o){return n.apply(null,o)}}function ln(n){return c.isObject(n)&&n.isAxiosError===!0}var fn={Continue:100,SwitchingProtocols:101,Processing:102,EarlyHints:103,Ok:200,Created:201,Accepted:202,NonAuthoritativeInformation:203,NoContent:204,ResetContent:205,PartialContent:206,MultiStatus:207,AlreadyReported:208,ImUsed:226,MultipleChoices:300,MovedPermanently:301,Found:302,SeeOther:303,NotModified:304,UseProxy:305,Unused:306,TemporaryRedirect:307,PermanentRedirect:308,BadRequest:400,Unauthorized:401,PaymentRequired:402,Forbidden:403,NotFound:404,MethodNotAllowed:405,NotAcceptable:406,ProxyAuthenticationRequired:407,RequestTimeout:408,Conflict:409,Gone:410,LengthRequired:411,PreconditionFailed:412,PayloadTooLarge:413,UriTooLong:414,UnsupportedMediaType:415,RangeNotSatisfiable:416,ExpectationFailed:417,ImATeapot:418,MisdirectedRequest:421,UnprocessableEntity:422,Locked:423,FailedDependency:424,TooEarly:425,UpgradeRequired:426,PreconditionRequired:428,TooManyRequests:429,RequestHeaderFieldsTooLarge:431,UnavailableForLegalReasons:451,InternalServerError:500,NotImplemented:501,BadGateway:502,ServiceUnavailable:503,GatewayTimeout:504,HttpVersionNotSupported:505,VariantAlsoNegotiates:506,InsufficientStorage:507,LoopDetected:508,NotExtended:510,NetworkAuthenticationRequired:511,WebServerIsDown:521,ConnectionTimedOut:522,OriginIsUnreachable:523,TimeoutOccurred:524,SslHandshakeFailed:525,InvalidSslCertificate:526};Object.entries(fn).forEach(([n,e])=>{fn[e]=n});var xo=fn;function Lo(n){let e=new ke(n),o=Le(ke.prototype.request,e);return c.extend(o,ke.prototype,e,{allOwnKeys:!0}),c.extend(o,e,null,{allOwnKeys:!0}),o.create=function(r){return Lo(z(n,r))},o}var O=Lo(ge);O.Axios=ke;O.CanceledError=K;O.CancelToken=Io;O.isCancel=Me;O.VERSION=yt;O.toFormData=X;O.AxiosError=E;O.Cancel=O.CanceledError;O.all=function(e){return Promise.all(e)};O.spread=pn;O.isAxiosError=ln;O.mergeConfig=z;O.AxiosHeaders=w;O.formToJSON=n=>lt(c.isHTMLForm(n)?new FormData(n):n);O.getAdapter=Pt.getAdapter;O.HttpStatusCode=xo;O.default=O;var Dt=O;var{Axios:Ad,AxiosError:So,CanceledError:Od,isCancel:wd,CancelToken:_d,VERSION:Md,all:Ud,Cancel:jd,isAxiosError:Bd,spread:kd,toFormData:Fd,AxiosHeaders:qd,HttpStatusCode:Vd,formToJSON:Hd,getAdapter:$d,mergeConfig:zd}=Dt;var k=class n extends So{constructor(o,t,r,s,i,a){super(o,t,r,s,i);this.isNlicError=!0;this.name="NlicError",a&&(this.stack=a),Object.setPrototypeOf(this,n.prototype)}};var Co=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new k('Properties "amountFix" and "amountPercent" cannot be used at the same time');return v(e,{setTotalPrice(t){l(e,"totalPrice",t)},getTotalPrice(t){return p(e,"totalPrice",t)},setCurrency(t){l(e,"currency",t)},getCurrency(t){return p(e,"currency",t)},setAmountFix(t){l(e,"amountFix",t)},getAmountFix(t){return p(e,"amountFix",t)},setAmountPercent(t){l(e,"amountPercent",t)},getAmountPercent(t){return p(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),r=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&r&&s?`${t};${r};${s}`:""}},Co,{set:(t,r)=>{r==="amountFix"&&delete t.amountPercent,r==="amountPercent"&&delete t.amountFix}})},bt=Co;var se=n=>{let e=N(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>bt(t))),it(e)};var Ao=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setName(t){l(e,"name",t)},getName(t){return p(e,"name",t)},setLicensingModel(t){l(e,"licensingModel",t)},getLicensingModel(t){return p(e,"licensingModel",t)},setProductNumber(t){l(e,"productNumber",t)},getProductNumber(t){return p(e,"productNumber",t)},serialize(){return C(e,{ignore:["inUse"]})}},Ao)},Rt=Ao;var ie=n=>Rt(N(n));var Oo=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setExpirationTime(t){l(e,"expirationTime",t)},getExpirationTime(t){return p(e,"expirationTime",t)},setTokenType(t){l(e,"tokenType",t)},getTokenType(t){return p(e,"tokenType",t)},setLicenseeNumber(t){l(e,"licenseeNumber",t)},getLicenseeNumber(t){return p(e,"licenseeNumber",t)},setAction(t){l(e,"action",t)},getAction(t){return p(e,"action",t)},setApiKeyRole(t){l(e,"apiKeyRole",t)},getApiKeyRole(t){return p(e,"apiKeyRole",t)},setBundleNumber(t){l(e,"bundleNumber",t)},getBundleNumber(t){return p(e,"bundleNumber",t)},setBundlePrice(t){l(e,"bundlePrice",t)},getBundlePrice(t){return p(e,"bundlePrice",t)},setProductNumber(t){l(e,"productNumber",t)},getProductNumber(t){return p(e,"productNumber",t)},setPredefinedShoppingItem(t){l(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return p(e,"predefinedShoppingItem",t)},setSuccessURL(t){l(e,"successURL",t)},getSuccessURL(t){return p(e,"successURL",t)},setSuccessURLTitle(t){l(e,"successURLTitle",t)},getSuccessURLTitle(t){return p(e,"successURLTitle",t)},setCancelURL(t){l(e,"cancelURL",t)},getCancelURL(t){return p(e,"cancelURL",t)},setCancelURLTitle(t){l(e,"cancelURLTitle",t)},getCancelURLTitle(t){return p(e,"cancelURLTitle",t)},getShopURL(t){return p(e,"shopURL",t)},serialize(){return C(e,{ignore:["shopURL"]})}},Oo)},Nt=Oo;var ye=n=>{let e=N(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),Nt(e)};var gn=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},vt=(n,e)=>new gn(n,e);var wo=function(n={}){let e={...n};return v(e,{setActive(t){l(e,"active",t)},getActive(t){return p(e,"active",t)},setNumber(t){l(e,"number",t)},getNumber(t){return p(e,"number",t)},setStatus(t){l(e,"status",t)},getStatus(t){return p(e,"status",t)},setSource(t){l(e,"source",t)},getSource(t){return p(e,"source",t)},setGrandTotal(t){l(e,"grandTotal",t)},getGrandTotal(t){return p(e,"grandTotal",t)},setDiscount(t){l(e,"discount",t)},getDiscount(t){return p(e,"discount",t)},setCurrency(t){l(e,"currency",t)},getCurrency(t){return p(e,"currency",t)},setDateCreated(t){l(e,"dateCreated",t)},getDateCreated(t){return p(e,"dateCreated",t)},setDateClosed(t){l(e,"dateClosed",t)},getDateClosed(t){return p(e,"dateClosed",t)},setPaymentMethod(t){l(e,"paymentMethod",t)},getPaymentMethod(t){return p(e,"paymentMethod",t)},setLicenseTransactionJoins(t){l(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return p(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,C(t,{ignore:["licenseTransactionJoins","inUse"]})}},wo)},Fe=wo;var ae=n=>{let e=N(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let r=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,r&&(e.licenseTransactionJoins=r.map(({transactionNumber:s,licenseNumber:i})=>{let a=Fe({number:s}),d=de({number:i});return vt(a,d)})),Fe(e)};var _o=Dt.create(),Mo=null,Uo=[],jo=n=>{_o=n},It=()=>_o,Tn=n=>{Mo=n},Bo=()=>Mo,Pn=n=>{Uo=n},ko=()=>Uo;var hn={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.13.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var xt=n=>{let e=[],o=(t,r)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,r?`${r}`:"")});return}if(t instanceof Date){e.push(`${r}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let i=t[s];o(i,r?`${r}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${r}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var Ee=async(n,e,o,t,r)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${hn.version}/node&${process.version}`);let i={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(d,u)=>u["Content-Type"]==="application/x-www-form-urlencoded"?xt(d):(u["NetLicensing-Origin"]||(u["NetLicensing-Origin"]=`NetLicensing/Javascript ${hn.version}`),d)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(i.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),i.data=t):i.params=t,n.getSecurityMode()){case Y.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new k('Missing parameter "username"');if(!n.getPassword())throw new k('Missing parameter "password"');i.auth={username:n.getUsername(),password:n.getPassword()}}break;case Y.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new k('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case Y.ANONYMOUS_IDENTIFICATION:break;default:throw new k("Unknown security mode")}let a=r?.axiosInstance||It();try{let d=await a(i),u=d.data.infos?.info||[];if(Tn(d),Pn(u),r?.onResponse&&r.onResponse(d),u.length>0){r?.onInfo&&r.onInfo(u);let m=u.find(({type:T})=>T==="ERROR");if(m)throw new k(m.value,m.id,d.config,d.request,d)}return d}catch(d){let u=d,m=u.response,T=m?.data?.infos?.info||[];if(Tn(m||null),Pn(T),d.isAxiosError){let b=d.message;if(m?.data&&T.length>0){let S=T.find(({type:f})=>f==="ERROR");S&&(b=S.value)}throw new k(b,u.code,u.config,u.request,u.response)}throw d}};var Fo=(n,e,o,t)=>Ee(n,"get",e,o,t),qo=(n,e,o,t)=>Ee(n,"post",e,o,t),Vo=(n,e,o,t)=>Ee(n,"delete",e,o,t);var Hs={setAxiosInstance(n){jo(n)},getAxiosInstance(){return It()},getLastHttpRequestInfo(){return Bo()},getInfo(){return ko()},get(n,e,o,t){return Fo(n,e,o,t)},post(n,e,o,t){return qo(n,e,o,t)},delete(n,e,o,t){return Vo(n,e,o,t)},request(n,e,o,t,r){return Ee(n,e,o,t,r)},toQueryString(n){return xt(n)}},g=Hs;var x=n=>Object.keys(n).map(e=>`${e}=${String(n[e])}`).join(";"),Ho=n=>{let e={};return n.split(";").forEach(o=>{let[t,r]=o.split("=");e[t]=r}),e};var yn=n=>typeof n<"u"&&typeof n!="function",qe=n=>yn(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,R=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!qe(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},D=(n,e)=>{if(R(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var $o=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),r=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),i={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:r,totalItems:s,hasNext:r>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return r},getTotalItems(){return s},hasNext(){return r>o+1}};return new Proxy(n,{get(a,d,u){return Object.hasOwn(i,d)?i[d]:Reflect.get(a,d,u)},set(a,d,u,m){return Reflect.set(a,d,u,m)},getPrototypeOf(){return $o.prototype||null}})},I=$o;var De=h.Bundle.ENDPOINT_PATH,$s=h.Bundle.ENDPOINT_OBTAIN_PATH,Lt=h.Bundle.TYPE,zs={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${De}/${e}`,{},o)).data.items?.item.find(s=>s.type===Lt);return ee(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,De,t,o)).data.items,i=s?.item.filter(a=>a.type===Lt).map(a=>ee(a));return I(i||[],s)},async create(n,e,o){R(e,"bundle");let r=(await g.post(n,De,e.serialize(),o)).data.items?.item.find(s=>s.type===Lt);return ee(r)},async update(n,e,o,t){D(e,"number"),R(o,"bundle");let s=(await g.post(n,`${De}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Lt);return ee(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${De}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){D(e,"number"),D(o,"licenseeNumber");let r={[h.Licensee.LICENSEE_NUMBER]:o};return(await g.post(n,`${De}/${e}/${$s}`,r,t)).data.items?.item.filter(d=>d.type===h.License.TYPE)?.map(d=>J(d))||[]}},zo=zs;var En=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!qe(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},St=()=>new En;var ce=h.Licensee.ENDPOINT_PATH,Ys=h.Licensee.ENDPOINT_PATH_VALIDATE,Ks=h.Licensee.ENDPOINT_PATH_TRANSFER,Ct=h.Licensee.TYPE,Js={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${ce}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ct);return te(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,ce,t,o)).data.items,i=s?.item.filter(a=>a.type===Ct).map(a=>te(a));return I(i||[],s)},async create(n,e,o,t){R(o,"licensee");let r=o.serialize();e&&(r.productNumber=e);let i=(await g.post(n,ce,r,t)).data.items?.item.find(a=>a.type===Ct);return te(i)},async update(n,e,o,t){D(e,"number"),R(o,"licensee");let s=(await g.post(n,`${ce}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ct);return te(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${ce}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){D(e,"number");let r={};if(o){let u=o.productNumber;u&&(r.productNumber=u);let m=o.licenseeProperties;Object.keys(m).forEach(b=>{r[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(r.forOfflineUse=!0),o.isDryRun()&&(r.dryRun=!0);let T=o.getParameters();Object.keys(T).forEach((b,S)=>{r[`${h.ProductModule.PRODUCT_MODULE_NUMBER}${S}`]=b;let f=T[b];f&&Object.keys(f).forEach(y=>{r[y+S]=f[y]})})}let s=await g.post(n,`${ce}/${e}/${Ys}`,r,t),i=St(),a=s.data.ttl;return a&&i.setTtl(a),s.data.items?.item.filter(u=>u.type===h.Validation.TYPE)?.forEach(u=>{i.setValidation(N(u))}),i},transfer(n,e,o,t){D(e,"number"),D(o,"sourceLicenseeNumber");let r={sourceLicenseeNumber:o};return g.post(n,`${ce}/${e}/${Ks}`,r,t)}},Yo=Js;var Ve=h.License.ENDPOINT_PATH,At=h.License.TYPE,Gs={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${Ve}/${e}`,{},o)).data.items?.item.find(s=>s.type===At);return J(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,Ve,t,o)).data.items,i=s?.item.filter(a=>a.type===At).map(a=>J(a));return I(i||[],s)},async create(n,e,o,t,r,s){R(r,"license");let i=r.serialize();e&&(i.licenseeNumber=e),o&&(i.licenseTemplateNumber=o),t&&(i.transactionNumber=t);let d=(await g.post(n,Ve,i,s)).data.items?.item.find(u=>u.type===At);return J(d)},async update(n,e,o,t,r){D(e,"number"),R(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let a=(await g.post(n,`${Ve}/${e}`,s,r)).data.items?.item.find(d=>d.type===At);return J(a)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${Ve}/${e}`,{forceCascade:!!o},t)}},Ko=Gs;var He=h.LicenseTemplate.ENDPOINT_PATH,Ot=h.LicenseTemplate.TYPE,Ws={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${He}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ot);return ne(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,He,t,o)).data.items,i=s?.item.filter(a=>a.type===Ot).map(a=>ne(a));return I(i||[],s)},async create(n,e,o,t){R(o,"licenseTemplate");let r=o.serialize();e&&(r.productModuleNumber=e);let i=(await g.post(n,He,r,t)).data.items?.item.find(a=>a.type===Ot);return ne(i)},async update(n,e,o,t){D(e,"number"),R(o,"licenseTemplate");let s=(await g.post(n,`${He}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Ot);return ne(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${He}/${e}`,{forceCascade:!!o},t)}},Jo=Ws;var $e=h.Notification.ENDPOINT_PATH,wt=h.Notification.TYPE,Xs={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${$e}/${e}`,{},o)).data.items?.item.find(s=>s.type===wt);return oe(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,$e,t,o)).data.items,i=s?.item.filter(a=>a.type===wt).map(a=>oe(a));return I(i||[],s)},async create(n,e,o){R(e,"notification");let r=(await g.post(n,$e,e.serialize(),o)).data.items?.item.find(s=>s.type===wt);return oe(r)},async update(n,e,o,t){D(e,"number"),R(o,"notification");let s=(await g.post(n,`${$e}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===wt);return oe(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${$e}/${e}`,{forceCascade:!!o},t)}},Go=Xs;var Dn=h.PaymentMethod.ENDPOINT_PATH,bn=h.PaymentMethod.TYPE,Qs={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${Dn}/${e}`,{},o)).data.items?.item.find(s=>s.type===bn);return me(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,Dn,t,o)).data.items,i=s?.item.filter(a=>a.type===bn).map(a=>me(a));return I(i||[],s)},async update(n,e,o,t){D(e,"number"),R(o,"paymentMethod");let s=(await g.post(n,`${Dn}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===bn);return me(s)}},Wo=Qs;var ze=h.ProductModule.ENDPOINT_PATH,_t=h.ProductModule.TYPE,Zs={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${ze}/${e}`,{},o)).data.items?.item.find(s=>s.type===_t);return ie(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,ze,t,o)).data.items,i=s?.item.filter(a=>a.type===_t).map(a=>ie(a));return I(i||[],s)},async create(n,e,o,t){R(o,"productModule");let r=o.serialize();e&&(r.productNumber=e);let i=(await g.post(n,ze,r,t)).data.items?.item.find(a=>a.type===_t);return ie(i)},async update(n,e,o,t){D(e,"number"),R(o,"productModule");let s=(await g.post(n,`${ze}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===_t);return ie(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${ze}/${e}`,{forceCascade:!!o},t)}},Xo=Zs;var Ye=h.Product.ENDPOINT_PATH,Mt=h.Product.TYPE,ei={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${Ye}/${e}`,{},o)).data.items?.item.find(s=>s.type===Mt);return se(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,Ye,t,o)).data.items,i=s?.item.filter(a=>a.type===Mt).map(a=>se(a));return I(i||[],s)},async create(n,e,o){R(e,"product");let r=(await g.post(n,Ye,e.serialize(),o)).data.items?.item.find(s=>s.type===Mt);return se(r)},async update(n,e,o,t){D(e,"number"),R(o,"product");let s=(await g.post(n,`${Ye}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Mt);return se(s)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${Ye}/${e}`,{forceCascade:!!o},t)}},Qo=ei;var Ut=h.Token.ENDPOINT_PATH,Rn=h.Token.TYPE,ti={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${Ut}/${e}`,{},o)).data.items?.item.find(s=>s.type===Rn);return ye(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,Ut,t,o)).data.items,i=s?.item.filter(a=>a.type===Rn).map(a=>ye(a));return I(i||[],s)},async create(n,e,o){R(e,"token");let r=(await g.post(n,Ut,e.serialize(),o)).data.items?.item.find(s=>s.type===Rn);return ye(r)},delete(n,e,o,t){return D(e,"number"),g.delete(n,`${Ut}/${e}`,{forceCascade:!!o},t)}},Zo=ti;var jt=h.Transaction.ENDPOINT_PATH,Bt=h.Transaction.TYPE,ni={async get(n,e,o){D(e,"number");let r=(await g.get(n,`${jt}/${e}`,{},o)).data.items?.item.find(s=>s.type===Bt);return ae(r)},async list(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let s=(await g.get(n,jt,t,o)).data.items,i=s?.item.filter(a=>a.type===Bt).map(a=>ae(a));return I(i||[],s)},async create(n,e,o){R(e,"transaction");let r=(await g.post(n,jt,e.serialize(),o)).data.items?.item.find(s=>s.type===Bt);return ae(r)},async update(n,e,o,t){D(e,"number"),R(o,"transaction");let s=(await g.post(n,`${jt}/${e}`,o.serialize(),t)).data.items?.item.find(i=>i.type===Bt);return ae(s)}},er=ni;var Nn=h.Utility.ENDPOINT_PATH,oi={async listLicenseTypes(n,e){let o=`${Nn}/${h.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,r=(await g.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSE_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return I(i||[],r)},async listLicensingModels(n,e){let o=`${Nn}/${h.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,r=(await g.get(n,o,void 0,e)).data.items,s=h.Utility.LICENSING_MODEL_TYPE,i=r?.item.filter(a=>a.type===s).map(a=>N(a).name);return I(i||[],r)},async listCountries(n,e,o){let t={};e&&(t[h.FILTER]=typeof e=="string"?e:x(e));let r=`${Nn}/${h.Utility.ENDPOINT_PATH_COUNTRIES}`,i=(await g.get(n,r,t,o)).data.items,a=h.Utility.COUNTRY_TYPE,d=i?.item.filter(u=>u.type===a).map(u=>tt(u));return I(d||[],i)}},tr=oi;var vn=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||Y.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},nr=n=>new vn(n);var In=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},or=()=>new In;return ur(ri);})(); //# sourceMappingURL=index.global.js.map \ No newline at end of file diff --git a/dist/index.global.js.map b/dist/index.global.js.map index 9340202..337ca2c 100644 --- a/dist/index.global.js.map +++ b/dist/index.global.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\nconst {iterator, toStringTag} = Symbol;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(toStringTag in val) && !(iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) || (\n isFunction(thing.append) && (\n (kind = kindOf(thing)) === 'formdata' ||\n // detect form-data instance\n (kind === 'object' && isFunction(thing.toString) && thing.toString() === '[object FormData]')\n )\n )\n )\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = ['ReadableStream', 'Request', 'Response', 'Headers'].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite(value = +value) ? value : defaultValue;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[toStringTag] === 'FormData' && thing[iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nconst isAsyncFn = kindOfTest('AsyncFunction');\n\nconst isThenable = (thing) =>\n thing && (isObject(thing) || isFunction(thing)) && isFunction(thing.then) && isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported ? ((token, callbacks) => {\n _global.addEventListener(\"message\", ({source, data}) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n }, false);\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n }\n })(`axios@${Math.random()}`, []) : (cb) => setTimeout(cb);\n})(\n typeof setImmediate === 'function',\n isFunction(_global.postMessage)\n);\n\nconst asap = typeof queueMicrotask !== 'undefined' ?\n queueMicrotask.bind(_global) : ( typeof process !== 'undefined' && process.nextTick || _setImmediate);\n\n// *********************\n\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status ? response.status : null;\n }\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n if (utils.isFunction(options)) {\n options = {\n serialize: options\n };\n } \n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn.apply(null, args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure) {\n const cookie = [name + '=' + encodeURIComponent(value)];\n\n utils.isNumber(expires) && cookie.push('expires=' + new Date(expires).toGMTString());\n\n utils.isString(path) && cookie.push('path=' + path);\n\n utils.isString(domain) && cookie.push('domain=' + domain);\n\n secure === true && cookie.push('secure');\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, prop , caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop , caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop , caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b , prop) => mergeDeepProperties(headersToObject(a), headersToObject(b),prop, true)\n };\n\n utils.forEach(Object.keys(Object.assign({}, config1, config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let {data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth} = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n let contentType;\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // Let the browser set it\n } else if ((contentType = headers.getContentType()) !== false) {\n // fix semicolon duplication issue for ReactNative FormData implementation\n const [type, ...tokens] = contentType ? contentType.split(';').map(token => token.trim()).filter(Boolean) : [];\n headers.setContentType([type || 'multipart/form-data', ...tokens].join('; '));\n }\n }\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout ${timeout} of ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst isFetchSupported = typeof fetch === 'function' && typeof Request === 'function' && typeof Response === 'function';\nconst isReadableStreamSupported = isFetchSupported && typeof ReadableStream === 'function';\n\n// used only inside the fetch adapter\nconst encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Response(str).arrayBuffer())\n);\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst supportsRequestStream = isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n});\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst supportsResponseStream = isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n\nconst resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n};\n\nisFetchSupported && (((res) => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = utils.isFunction(res[type]) ? (res) => res[type]() :\n (_, config) => {\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n})(new Response));\n\nconst getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if(utils.isBlob(body)) {\n return body.size;\n }\n\n if(utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if(utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if(utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if(utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n}\n\nconst resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n}\n\nexport default isFetchSupported && (async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = \"credentials\" in Request.prototype;\n request = new Request(url, {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n });\n\n let response = await fetch(request);\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request);\n }\n});\n\n\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: fetchAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nconst renderReason = (reason) => `- ${reason}`;\n\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.9.0\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","message","code","config","request","response","utils_default","prototype","descriptors","error","customProps","axiosError","obj","prop","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","message","config","request","AxiosError_default","utils_default","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","contentType","utils_default","platform_default","type","tokens","token","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","isFetchSupported","isReadableStreamSupported","encodeText","encoder","str","test","fn","args","supportsRequestStream","duplexAccessed","hasContentType","platform_default","DEFAULT_CHUNK_SIZE","supportsResponseStream","utils_default","resolvers","res","type","_","config","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","fetch_default","url","method","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","knownAdapters","null_default","xhr_default","fetch_default","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","adapters_default","adapters","length","nameOrAdapter","rejectedReasons","i","id","AxiosError_default","reasons","state","s","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/common/utils.js","../node_modules/axios/lib/platform/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/helpers/throttle.js","../node_modules/axios/lib/helpers/progressEventReducer.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/helpers/resolveConfig.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/helpers/composeSignals.js","../node_modules/axios/lib/helpers/trackStream.js","../node_modules/axios/lib/adapters/fetch.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/index.js","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","'use strict';\n\n/**\n * Create a bound version of a function with a specified `this` context\n *\n * @param {Function} fn - The function to bind\n * @param {*} thisArg - The value to be passed as the `this` parameter\n * @returns {Function} A new function that will call the original function with the specified `this` context\n */\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","\"use strict\";\n\nimport bind from \"./helpers/bind.js\";\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst { toString } = Object.prototype;\nconst { getPrototypeOf } = Object;\nconst { iterator, toStringTag } = Symbol;\n\nconst kindOf = ((cache) => (thing) => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type;\n};\n\nconst typeOfTest = (type) => (thing) => typeof thing === type;\n\n/**\n * Determine if a value is a non-null object\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst { isArray } = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest(\"undefined\");\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return (\n val !== null &&\n !isUndefined(val) &&\n val.constructor !== null &&\n !isUndefined(val.constructor) &&\n isFunction(val.constructor.isBuffer) &&\n val.constructor.isBuffer(val)\n );\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest(\"ArrayBuffer\");\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if (typeof ArrayBuffer !== \"undefined\" && ArrayBuffer.isView) {\n result = ArrayBuffer.isView(val);\n } else {\n result = val && val.buffer && isArrayBuffer(val.buffer);\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest(\"string\");\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest(\"function\");\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest(\"number\");\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === \"object\";\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = (thing) => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== \"object\") {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (\n (prototype === null ||\n prototype === Object.prototype ||\n Object.getPrototypeOf(prototype) === null) &&\n !(toStringTag in val) &&\n !(iterator in val)\n );\n};\n\n/**\n * Determine if a value is an empty object (safely handles Buffers)\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an empty object, otherwise false\n */\nconst isEmptyObject = (val) => {\n // Early return for non-objects or Buffers to prevent RangeError\n if (!isObject(val) || isBuffer(val)) {\n return false;\n }\n\n try {\n return (\n Object.keys(val).length === 0 &&\n Object.getPrototypeOf(val) === Object.prototype\n );\n } catch (e) {\n // Fallback for any other objects that might cause RangeError with Object.keys()\n return false;\n }\n};\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest(\"Date\");\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest(\"File\");\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest(\"Blob\");\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest(\"FileList\");\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n let kind;\n return (\n thing &&\n ((typeof FormData === \"function\" && thing instanceof FormData) ||\n (isFunction(thing.append) &&\n ((kind = kindOf(thing)) === \"formdata\" ||\n // detect form-data instance\n (kind === \"object\" &&\n isFunction(thing.toString) &&\n thing.toString() === \"[object FormData]\"))))\n );\n};\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest(\"URLSearchParams\");\n\nconst [isReadableStream, isRequest, isResponse, isHeaders] = [\n \"ReadableStream\",\n \"Request\",\n \"Response\",\n \"Headers\",\n].map(kindOfTest);\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) =>\n str.trim ? str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, \"\");\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, { allOwnKeys = false } = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === \"undefined\") {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== \"object\") {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Buffer check\n if (isBuffer(obj)) {\n return;\n }\n\n // Iterate over object keys\n const keys = allOwnKeys\n ? Object.getOwnPropertyNames(obj)\n : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n if (isBuffer(obj)) {\n return null;\n }\n\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\"\n ? self\n : typeof window !== \"undefined\"\n ? window\n : global;\n})();\n\nconst isContextDefined = (context) =>\n !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * const result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const { caseless, skipUndefined } = (isContextDefined(this) && this) || {};\n const result = {};\n const assignValue = (val, key) => {\n // Skip dangerous property names to prevent prototype pollution\n if (key === \"__proto__\" || key === \"constructor\" || key === \"prototype\") {\n return;\n }\n\n const targetKey = (caseless && findKey(result, key)) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else if (!skipUndefined || !isUndefined(val)) {\n result[targetKey] = val;\n }\n };\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Object} [options]\n * @param {Boolean} [options.allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, { allOwnKeys } = {}) => {\n forEach(\n b,\n (val, key) => {\n if (thisArg && isFunction(val)) {\n Object.defineProperty(a, key, {\n value: bind(val, thisArg),\n writable: true,\n enumerable: true,\n configurable: true,\n });\n } else {\n Object.defineProperty(a, key, {\n value: val,\n writable: true,\n enumerable: true,\n configurable: true,\n });\n }\n },\n { allOwnKeys },\n );\n return a;\n};\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xfeff) {\n content = content.slice(1);\n }\n return content;\n};\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(\n superConstructor.prototype,\n descriptors,\n );\n Object.defineProperty(constructor.prototype, \"constructor\", {\n value: constructor,\n writable: true,\n enumerable: false,\n configurable: true,\n });\n Object.defineProperty(constructor, \"super\", {\n value: superConstructor.prototype,\n });\n props && Object.assign(constructor.prototype, props);\n};\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if (\n (!propFilter || propFilter(prop, sourceObj, destObj)) &&\n !merged[prop]\n ) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (\n sourceObj &&\n (!filter || filter(sourceObj, destObj)) &&\n sourceObj !== Object.prototype\n );\n\n return destObj;\n};\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n};\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n};\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = ((TypedArray) => {\n // eslint-disable-next-line func-names\n return (thing) => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== \"undefined\" && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[iterator];\n\n const _iterator = generator.call(obj);\n\n let result;\n\n while ((result = _iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n};\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n};\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest(\"HTMLFormElement\");\n\nconst toCamelCase = (str) => {\n return str\n .toLowerCase()\n .replace(/[-_\\s]([a-z\\d])(\\w*)/g, function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n });\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (\n ({ hasOwnProperty }) =>\n (obj, prop) =>\n hasOwnProperty.call(obj, prop)\n)(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest(\"RegExp\");\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n let ret;\n if ((ret = reducer(descriptor, name, obj)) !== false) {\n reducedDescriptors[name] = ret || descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n};\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (\n isFunction(obj) &&\n [\"arguments\", \"caller\", \"callee\"].indexOf(name) !== -1\n ) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if (\"writable\" in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error(\"Can not rewrite read-only method '\" + name + \"'\");\n };\n }\n });\n};\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach((value) => {\n obj[value] = true;\n });\n };\n\n isArray(arrayOrString)\n ? define(arrayOrString)\n : define(String(arrayOrString).split(delimiter));\n\n return obj;\n};\n\nconst noop = () => {};\n\nconst toFiniteNumber = (value, defaultValue) => {\n return value != null && Number.isFinite((value = +value))\n ? value\n : defaultValue;\n};\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(\n thing &&\n isFunction(thing.append) &&\n thing[toStringTag] === \"FormData\" &&\n thing[iterator]\n );\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n //Buffer check\n if (isBuffer(source)) {\n return source;\n }\n\n if (!(\"toJSON\" in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n };\n\n return visit(obj, 0);\n};\n\nconst isAsyncFn = kindOfTest(\"AsyncFunction\");\n\nconst isThenable = (thing) =>\n thing &&\n (isObject(thing) || isFunction(thing)) &&\n isFunction(thing.then) &&\n isFunction(thing.catch);\n\n// original code\n// https://github.com/DigitalBrainJS/AxiosPromise/blob/16deab13710ec09779922131f3fa5954320f83ab/lib/utils.js#L11-L34\n\nconst _setImmediate = ((setImmediateSupported, postMessageSupported) => {\n if (setImmediateSupported) {\n return setImmediate;\n }\n\n return postMessageSupported\n ? ((token, callbacks) => {\n _global.addEventListener(\n \"message\",\n ({ source, data }) => {\n if (source === _global && data === token) {\n callbacks.length && callbacks.shift()();\n }\n },\n false,\n );\n\n return (cb) => {\n callbacks.push(cb);\n _global.postMessage(token, \"*\");\n };\n })(`axios@${Math.random()}`, [])\n : (cb) => setTimeout(cb);\n})(typeof setImmediate === \"function\", isFunction(_global.postMessage));\n\nconst asap =\n typeof queueMicrotask !== \"undefined\"\n ? queueMicrotask.bind(_global)\n : (typeof process !== \"undefined\" && process.nextTick) || _setImmediate;\n\n// *********************\n\nconst isIterable = (thing) => thing != null && isFunction(thing[iterator]);\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isEmptyObject,\n isReadableStream,\n isRequest,\n isResponse,\n isHeaders,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n isSpecCompliantForm,\n toJSONObject,\n isAsyncFn,\n isThenable,\n setImmediate: _setImmediate,\n asap,\n isIterable,\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass AxiosError extends Error {\n static from(error, code, config, request, response, customProps) {\n const axiosError = new AxiosError(error.message, code || error.code, config, request, response);\n axiosError.cause = error;\n axiosError.name = error.name;\n customProps && Object.assign(axiosError, customProps);\n return axiosError;\n }\n\n /**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\n constructor(message, code, config, request, response) {\n super(message);\n this.name = 'AxiosError';\n this.isAxiosError = true;\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n if (response) {\n this.response = response;\n this.status = response.status;\n }\n }\n\n toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.status,\n };\n }\n}\n\n// This can be changed to static properties as soon as the parser options in .eslint.cjs are updated.\nAxiosError.ERR_BAD_OPTION_VALUE = 'ERR_BAD_OPTION_VALUE';\nAxiosError.ERR_BAD_OPTION = 'ERR_BAD_OPTION';\nAxiosError.ECONNABORTED = 'ECONNABORTED';\nAxiosError.ETIMEDOUT = 'ETIMEDOUT';\nAxiosError.ERR_NETWORK = 'ERR_NETWORK';\nAxiosError.ERR_FR_TOO_MANY_REDIRECTS = 'ERR_FR_TOO_MANY_REDIRECTS';\nAxiosError.ERR_DEPRECATED = 'ERR_DEPRECATED';\nAxiosError.ERR_BAD_RESPONSE = 'ERR_BAD_RESPONSE';\nAxiosError.ERR_BAD_REQUEST = 'ERR_BAD_REQUEST';\nAxiosError.ERR_CANCELED = 'ERR_CANCELED';\nAxiosError.ERR_NOT_SUPPORT = 'ERR_NOT_SUPPORT';\nAxiosError.ERR_INVALID_URL = 'ERR_INVALID_URL';\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (utils.isBoolean(value)) {\n return value.toString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?(object|Function)} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n if (!params) {\n return url;\n }\n\n const _encode = options && options.encode || encode;\n\n const _options = utils.isFunction(options) ? {\n serialize: options\n } : options;\n\n const serializeFn = _options && _options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, _options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, _options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n * @param {Object} options The options for the interceptor, synchronous and runWhen\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {void}\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false,\n legacyInterceptorReqResOrdering: true\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","const hasBrowserEnv = typeof window !== 'undefined' && typeof document !== 'undefined';\n\nconst _navigator = typeof navigator === 'object' && navigator || undefined;\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst hasStandardBrowserEnv = hasBrowserEnv &&\n (!_navigator || ['ReactNative', 'NativeScript', 'NS'].indexOf(_navigator.product) < 0);\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\nconst hasStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\nconst origin = hasBrowserEnv && window.location.href || 'http://localhost';\n\nexport {\n hasBrowserEnv,\n hasStandardBrowserWebWorkerEnv,\n hasStandardBrowserEnv,\n _navigator as navigator,\n origin\n}\n","import platform from './node/index.js';\nimport * as utils from './common/utils.js';\n\nexport default {\n ...utils,\n ...platform\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), {\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n },\n ...options\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n\n if (name === '__proto__') return true;\n\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http', 'fetch'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data) ||\n utils.isReadableStream(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (utils.isResponse(data) || utils.isReadableStream(data)) {\n return data;\n }\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data, this.parseReviver);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*',\n 'Content-Type': undefined\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head', 'post', 'put', 'patch'], (method) => {\n defaults.headers[method] = {};\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else if (utils.isObject(header) && utils.isIterable(header)) {\n let obj = {}, dest, key;\n for (const entry of header) {\n if (!utils.isArray(entry)) {\n throw TypeError('Object iterator must return a key-value pair');\n }\n\n obj[key = entry[0]] = (dest = obj[key]) ?\n (utils.isArray(dest) ? [...dest, entry[1]] : [dest, entry[1]]) : entry[1];\n }\n\n setHeaders(obj, valueOrRewrite)\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n getSetCookie() {\n return this.get(\"set-cookie\") || [];\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\n// reserved names hotfix\nutils.reduceDescriptors(AxiosHeaders.prototype, ({value}, key) => {\n let mapped = key[0].toUpperCase() + key.slice(1); // map `set` => `Set`\n return {\n get: () => value,\n set(headerValue) {\n this[mapped] = headerValue;\n }\n }\n});\n\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from '../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\n\nclass CanceledError extends AxiosError {\n /**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\n constructor(message, config, request) {\n super(message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n this.__CANCEL__ = true;\n }\n}\n\nexport default CanceledError;\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","/**\n * Throttle decorator\n * @param {Function} fn\n * @param {Number} freq\n * @return {Function}\n */\nfunction throttle(fn, freq) {\n let timestamp = 0;\n let threshold = 1000 / freq;\n let lastArgs;\n let timer;\n\n const invoke = (args, now = Date.now()) => {\n timestamp = now;\n lastArgs = null;\n if (timer) {\n clearTimeout(timer);\n timer = null;\n }\n fn(...args);\n }\n\n const throttled = (...args) => {\n const now = Date.now();\n const passed = now - timestamp;\n if ( passed >= threshold) {\n invoke(args, now);\n } else {\n lastArgs = args;\n if (!timer) {\n timer = setTimeout(() => {\n timer = null;\n invoke(lastArgs)\n }, threshold - passed);\n }\n }\n }\n\n const flush = () => lastArgs && invoke(lastArgs);\n\n return [throttled, flush];\n}\n\nexport default throttle;\n","import speedometer from \"./speedometer.js\";\nimport throttle from \"./throttle.js\";\nimport utils from \"../utils.js\";\n\nexport const progressEventReducer = (listener, isDownloadStream, freq = 3) => {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return throttle(e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e,\n lengthComputable: total != null,\n [isDownloadStream ? 'download' : 'upload']: true\n };\n\n listener(data);\n }, freq);\n}\n\nexport const progressEventDecorator = (total, throttled) => {\n const lengthComputable = total != null;\n\n return [(loaded) => throttled[0]({\n lengthComputable,\n total,\n loaded\n }), throttled[1]];\n}\n\nexport const asyncDecorator = (fn) => (...args) => utils.asap(() => fn(...args));\n","import platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ? ((origin, isMSIE) => (url) => {\n url = new URL(url, platform.origin);\n\n return (\n origin.protocol === url.protocol &&\n origin.host === url.host &&\n (isMSIE || origin.port === url.port)\n );\n})(\n new URL(platform.origin),\n platform.navigator && /(msie|trident)/i.test(platform.navigator.userAgent)\n) : () => true;\n","import utils from '../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.hasStandardBrowserEnv ?\n\n // Standard browser envs support document.cookie\n {\n write(name, value, expires, path, domain, secure, sameSite) {\n if (typeof document === 'undefined') return;\n\n const cookie = [`${name}=${encodeURIComponent(value)}`];\n\n if (utils.isNumber(expires)) {\n cookie.push(`expires=${new Date(expires).toUTCString()}`);\n }\n if (utils.isString(path)) {\n cookie.push(`path=${path}`);\n }\n if (utils.isString(domain)) {\n cookie.push(`domain=${domain}`);\n }\n if (secure === true) {\n cookie.push('secure');\n }\n if (utils.isString(sameSite)) {\n cookie.push(`SameSite=${sameSite}`);\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read(name) {\n if (typeof document === 'undefined') return null;\n const match = document.cookie.match(new RegExp('(?:^|; )' + name + '=([^;]*)'));\n return match ? decodeURIComponent(match[1]) : null;\n },\n\n remove(name) {\n this.write(name, '', Date.now() - 86400000, '/');\n }\n }\n\n :\n\n // Non-standard browser env (web workers, react-native) lack needed support.\n {\n write() {},\n read() {\n return null;\n },\n remove() {}\n };\n\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n if (typeof url !== 'string') {\n return false;\n }\n\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/?\\/$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL, allowAbsoluteUrls) {\n let isRelativeUrl = !isAbsoluteURL(requestedURL);\n if (baseURL && (isRelativeUrl || allowAbsoluteUrls == false)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","\"use strict\";\n\nimport utils from \"../utils.js\";\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) =>\n thing instanceof AxiosHeaders ? { ...thing } : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, prop, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({ caseless }, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n function mergeDeepProperties(a, b, prop, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, prop, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, prop, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n withXSRFToken: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b, prop) =>\n mergeDeepProperties(headersToObject(a), headersToObject(b), prop, true),\n };\n\n utils.forEach(\n Object.keys({ ...config1, ...config2 }),\n function computeConfigValue(prop) {\n if (\n prop === \"__proto__\" ||\n prop === \"constructor\" ||\n prop === \"prototype\"\n )\n return;\n const merge = utils.hasOwnProp(mergeMap, prop)\n ? mergeMap[prop]\n : mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) ||\n (config[prop] = configValue);\n },\n );\n\n return config;\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport isURLSameOrigin from \"./isURLSameOrigin.js\";\nimport cookies from \"./cookies.js\";\nimport buildFullPath from \"../core/buildFullPath.js\";\nimport mergeConfig from \"../core/mergeConfig.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport buildURL from \"./buildURL.js\";\n\nexport default (config) => {\n const newConfig = mergeConfig({}, config);\n\n let { data, withXSRFToken, xsrfHeaderName, xsrfCookieName, headers, auth } = newConfig;\n\n newConfig.headers = headers = AxiosHeaders.from(headers);\n\n newConfig.url = buildURL(buildFullPath(newConfig.baseURL, newConfig.url, newConfig.allowAbsoluteUrls), config.params, config.paramsSerializer);\n\n // HTTP basic authentication\n if (auth) {\n headers.set('Authorization', 'Basic ' +\n btoa((auth.username || '') + ':' + (auth.password ? unescape(encodeURIComponent(auth.password)) : ''))\n );\n }\n\n if (utils.isFormData(data)) {\n if (platform.hasStandardBrowserEnv || platform.hasStandardBrowserWebWorkerEnv) {\n headers.setContentType(undefined); // browser handles it\n } else if (utils.isFunction(data.getHeaders)) {\n // Node.js FormData (like form-data package)\n const formHeaders = data.getHeaders();\n // Only set safe headers to avoid overwriting security headers\n const allowedHeaders = ['content-type', 'content-length'];\n Object.entries(formHeaders).forEach(([key, val]) => {\n if (allowedHeaders.includes(key.toLowerCase())) {\n headers.set(key, val);\n }\n });\n }\n } \n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n\n if (platform.hasStandardBrowserEnv) {\n withXSRFToken && utils.isFunction(withXSRFToken) && (withXSRFToken = withXSRFToken(newConfig));\n\n if (withXSRFToken || (withXSRFToken !== false && isURLSameOrigin(newConfig.url))) {\n // Add xsrf header\n const xsrfValue = xsrfHeaderName && xsrfCookieName && cookies.read(xsrfCookieName);\n\n if (xsrfValue) {\n headers.set(xsrfHeaderName, xsrfValue);\n }\n }\n }\n\n return newConfig;\n}\n\n","import utils from '../utils.js';\nimport settle from '../core/settle.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport {progressEventReducer} from '../helpers/progressEventReducer.js';\nimport resolveConfig from \"../helpers/resolveConfig.js\";\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n const _config = resolveConfig(config);\n let requestData = _config.data;\n const requestHeaders = AxiosHeaders.from(_config.headers).normalize();\n let {responseType, onUploadProgress, onDownloadProgress} = _config;\n let onCanceled;\n let uploadThrottled, downloadThrottled;\n let flushUpload, flushDownload;\n\n function done() {\n flushUpload && flushUpload(); // flush events\n flushDownload && flushDownload(); // flush events\n\n _config.cancelToken && _config.cancelToken.unsubscribe(onCanceled);\n\n _config.signal && _config.signal.removeEventListener('abort', onCanceled);\n }\n\n let request = new XMLHttpRequest();\n\n request.open(_config.method.toUpperCase(), _config.url, true);\n\n // Set the request timeout in MS\n request.timeout = _config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError(event) {\n // Browsers deliver a ProgressEvent in XHR onerror\n // (message may be empty; when present, surface it)\n // See https://developer.mozilla.org/docs/Web/API/XMLHttpRequest/error_event\n const msg = event && event.message ? event.message : 'Network Error';\n const err = new AxiosError(msg, AxiosError.ERR_NETWORK, config, request);\n // attach the underlying event for consumers who want details\n err.event = event || null;\n reject(err);\n request = null;\n };\n \n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = _config.timeout ? 'timeout of ' + _config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = _config.transitional || transitionalDefaults;\n if (_config.timeoutErrorMessage) {\n timeoutErrorMessage = _config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(_config.withCredentials)) {\n request.withCredentials = !!_config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = _config.responseType;\n }\n\n // Handle progress if needed\n if (onDownloadProgress) {\n ([downloadThrottled, flushDownload] = progressEventReducer(onDownloadProgress, true));\n request.addEventListener('progress', downloadThrottled);\n }\n\n // Not all browsers support upload events\n if (onUploadProgress && request.upload) {\n ([uploadThrottled, flushUpload] = progressEventReducer(onUploadProgress));\n\n request.upload.addEventListener('progress', uploadThrottled);\n\n request.upload.addEventListener('loadend', flushUpload);\n }\n\n if (_config.cancelToken || _config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n _config.cancelToken && _config.cancelToken.subscribe(onCanceled);\n if (_config.signal) {\n _config.signal.aborted ? onCanceled() : _config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(_config.url);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","import CanceledError from \"../cancel/CanceledError.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport utils from '../utils.js';\n\nconst composeSignals = (signals, timeout) => {\n const {length} = (signals = signals ? signals.filter(Boolean) : []);\n\n if (timeout || length) {\n let controller = new AbortController();\n\n let aborted;\n\n const onabort = function (reason) {\n if (!aborted) {\n aborted = true;\n unsubscribe();\n const err = reason instanceof Error ? reason : this.reason;\n controller.abort(err instanceof AxiosError ? err : new CanceledError(err instanceof Error ? err.message : err));\n }\n }\n\n let timer = timeout && setTimeout(() => {\n timer = null;\n onabort(new AxiosError(`timeout of ${timeout}ms exceeded`, AxiosError.ETIMEDOUT))\n }, timeout)\n\n const unsubscribe = () => {\n if (signals) {\n timer && clearTimeout(timer);\n timer = null;\n signals.forEach(signal => {\n signal.unsubscribe ? signal.unsubscribe(onabort) : signal.removeEventListener('abort', onabort);\n });\n signals = null;\n }\n }\n\n signals.forEach((signal) => signal.addEventListener('abort', onabort));\n\n const {signal} = controller;\n\n signal.unsubscribe = () => utils.asap(unsubscribe);\n\n return signal;\n }\n}\n\nexport default composeSignals;\n","\nexport const streamChunk = function* (chunk, chunkSize) {\n let len = chunk.byteLength;\n\n if (!chunkSize || len < chunkSize) {\n yield chunk;\n return;\n }\n\n let pos = 0;\n let end;\n\n while (pos < len) {\n end = pos + chunkSize;\n yield chunk.slice(pos, end);\n pos = end;\n }\n}\n\nexport const readBytes = async function* (iterable, chunkSize) {\n for await (const chunk of readStream(iterable)) {\n yield* streamChunk(chunk, chunkSize);\n }\n}\n\nconst readStream = async function* (stream) {\n if (stream[Symbol.asyncIterator]) {\n yield* stream;\n return;\n }\n\n const reader = stream.getReader();\n try {\n for (;;) {\n const {done, value} = await reader.read();\n if (done) {\n break;\n }\n yield value;\n }\n } finally {\n await reader.cancel();\n }\n}\n\nexport const trackStream = (stream, chunkSize, onProgress, onFinish) => {\n const iterator = readBytes(stream, chunkSize);\n\n let bytes = 0;\n let done;\n let _onFinish = (e) => {\n if (!done) {\n done = true;\n onFinish && onFinish(e);\n }\n }\n\n return new ReadableStream({\n async pull(controller) {\n try {\n const {done, value} = await iterator.next();\n\n if (done) {\n _onFinish();\n controller.close();\n return;\n }\n\n let len = value.byteLength;\n if (onProgress) {\n let loadedBytes = bytes += len;\n onProgress(loadedBytes);\n }\n controller.enqueue(new Uint8Array(value));\n } catch (err) {\n _onFinish(err);\n throw err;\n }\n },\n cancel(reason) {\n _onFinish(reason);\n return iterator.return();\n }\n }, {\n highWaterMark: 2\n })\n}\n","import platform from \"../platform/index.js\";\nimport utils from \"../utils.js\";\nimport AxiosError from \"../core/AxiosError.js\";\nimport composeSignals from \"../helpers/composeSignals.js\";\nimport {trackStream} from \"../helpers/trackStream.js\";\nimport AxiosHeaders from \"../core/AxiosHeaders.js\";\nimport {progressEventReducer, progressEventDecorator, asyncDecorator} from \"../helpers/progressEventReducer.js\";\nimport resolveConfig from \"../helpers/resolveConfig.js\";\nimport settle from \"../core/settle.js\";\n\nconst DEFAULT_CHUNK_SIZE = 64 * 1024;\n\nconst {isFunction} = utils;\n\nconst globalFetchAPI = (({Request, Response}) => ({\n Request, Response\n}))(utils.global);\n\nconst {\n ReadableStream, TextEncoder\n} = utils.global;\n\n\nconst test = (fn, ...args) => {\n try {\n return !!fn(...args);\n } catch (e) {\n return false\n }\n}\n\nconst factory = (env) => {\n env = utils.merge.call({\n skipUndefined: true\n }, globalFetchAPI, env);\n\n const {fetch: envFetch, Request, Response} = env;\n const isFetchSupported = envFetch ? isFunction(envFetch) : typeof fetch === 'function';\n const isRequestSupported = isFunction(Request);\n const isResponseSupported = isFunction(Response);\n\n if (!isFetchSupported) {\n return false;\n }\n\n const isReadableStreamSupported = isFetchSupported && isFunction(ReadableStream);\n\n const encodeText = isFetchSupported && (typeof TextEncoder === 'function' ?\n ((encoder) => (str) => encoder.encode(str))(new TextEncoder()) :\n async (str) => new Uint8Array(await new Request(str).arrayBuffer())\n );\n\n const supportsRequestStream = isRequestSupported && isReadableStreamSupported && test(() => {\n let duplexAccessed = false;\n\n const hasContentType = new Request(platform.origin, {\n body: new ReadableStream(),\n method: 'POST',\n get duplex() {\n duplexAccessed = true;\n return 'half';\n },\n }).headers.has('Content-Type');\n\n return duplexAccessed && !hasContentType;\n });\n\n const supportsResponseStream = isResponseSupported && isReadableStreamSupported &&\n test(() => utils.isReadableStream(new Response('').body));\n\n const resolvers = {\n stream: supportsResponseStream && ((res) => res.body)\n };\n\n isFetchSupported && ((() => {\n ['text', 'arrayBuffer', 'blob', 'formData', 'stream'].forEach(type => {\n !resolvers[type] && (resolvers[type] = (res, config) => {\n let method = res && res[type];\n\n if (method) {\n return method.call(res);\n }\n\n throw new AxiosError(`Response type '${type}' is not supported`, AxiosError.ERR_NOT_SUPPORT, config);\n })\n });\n })());\n\n const getBodyLength = async (body) => {\n if (body == null) {\n return 0;\n }\n\n if (utils.isBlob(body)) {\n return body.size;\n }\n\n if (utils.isSpecCompliantForm(body)) {\n const _request = new Request(platform.origin, {\n method: 'POST',\n body,\n });\n return (await _request.arrayBuffer()).byteLength;\n }\n\n if (utils.isArrayBufferView(body) || utils.isArrayBuffer(body)) {\n return body.byteLength;\n }\n\n if (utils.isURLSearchParams(body)) {\n body = body + '';\n }\n\n if (utils.isString(body)) {\n return (await encodeText(body)).byteLength;\n }\n }\n\n const resolveBodyLength = async (headers, body) => {\n const length = utils.toFiniteNumber(headers.getContentLength());\n\n return length == null ? getBodyLength(body) : length;\n }\n\n return async (config) => {\n let {\n url,\n method,\n data,\n signal,\n cancelToken,\n timeout,\n onDownloadProgress,\n onUploadProgress,\n responseType,\n headers,\n withCredentials = 'same-origin',\n fetchOptions\n } = resolveConfig(config);\n\n let _fetch = envFetch || fetch;\n\n responseType = responseType ? (responseType + '').toLowerCase() : 'text';\n\n let composedSignal = composeSignals([signal, cancelToken && cancelToken.toAbortSignal()], timeout);\n\n let request = null;\n\n const unsubscribe = composedSignal && composedSignal.unsubscribe && (() => {\n composedSignal.unsubscribe();\n });\n\n let requestContentLength;\n\n try {\n if (\n onUploadProgress && supportsRequestStream && method !== 'get' && method !== 'head' &&\n (requestContentLength = await resolveBodyLength(headers, data)) !== 0\n ) {\n let _request = new Request(url, {\n method: 'POST',\n body: data,\n duplex: \"half\"\n });\n\n let contentTypeHeader;\n\n if (utils.isFormData(data) && (contentTypeHeader = _request.headers.get('content-type'))) {\n headers.setContentType(contentTypeHeader)\n }\n\n if (_request.body) {\n const [onProgress, flush] = progressEventDecorator(\n requestContentLength,\n progressEventReducer(asyncDecorator(onUploadProgress))\n );\n\n data = trackStream(_request.body, DEFAULT_CHUNK_SIZE, onProgress, flush);\n }\n }\n\n if (!utils.isString(withCredentials)) {\n withCredentials = withCredentials ? 'include' : 'omit';\n }\n\n // Cloudflare Workers throws when credentials are defined\n // see https://github.com/cloudflare/workerd/issues/902\n const isCredentialsSupported = isRequestSupported && \"credentials\" in Request.prototype;\n\n const resolvedOptions = {\n ...fetchOptions,\n signal: composedSignal,\n method: method.toUpperCase(),\n headers: headers.normalize().toJSON(),\n body: data,\n duplex: \"half\",\n credentials: isCredentialsSupported ? withCredentials : undefined\n };\n\n request = isRequestSupported && new Request(url, resolvedOptions);\n\n let response = await (isRequestSupported ? _fetch(request, fetchOptions) : _fetch(url, resolvedOptions));\n\n const isStreamResponse = supportsResponseStream && (responseType === 'stream' || responseType === 'response');\n\n if (supportsResponseStream && (onDownloadProgress || (isStreamResponse && unsubscribe))) {\n const options = {};\n\n ['status', 'statusText', 'headers'].forEach(prop => {\n options[prop] = response[prop];\n });\n\n const responseContentLength = utils.toFiniteNumber(response.headers.get('content-length'));\n\n const [onProgress, flush] = onDownloadProgress && progressEventDecorator(\n responseContentLength,\n progressEventReducer(asyncDecorator(onDownloadProgress), true)\n ) || [];\n\n response = new Response(\n trackStream(response.body, DEFAULT_CHUNK_SIZE, onProgress, () => {\n flush && flush();\n unsubscribe && unsubscribe();\n }),\n options\n );\n }\n\n responseType = responseType || 'text';\n\n let responseData = await resolvers[utils.findKey(resolvers, responseType) || 'text'](response, config);\n\n !isStreamResponse && unsubscribe && unsubscribe();\n\n return await new Promise((resolve, reject) => {\n settle(resolve, reject, {\n data: responseData,\n headers: AxiosHeaders.from(response.headers),\n status: response.status,\n statusText: response.statusText,\n config,\n request\n })\n })\n } catch (err) {\n unsubscribe && unsubscribe();\n\n if (err && err.name === 'TypeError' && /Load failed|fetch/i.test(err.message)) {\n throw Object.assign(\n new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request, err && err.response),\n {\n cause: err.cause || err\n }\n )\n }\n\n throw AxiosError.from(err, err && err.code, config, request, err && err.response);\n }\n }\n}\n\nconst seedCache = new Map();\n\nexport const getFetch = (config) => {\n let env = (config && config.env) || {};\n const {fetch, Request, Response} = env;\n const seeds = [\n Request, Response, fetch\n ];\n\n let len = seeds.length, i = len,\n seed, target, map = seedCache;\n\n while (i--) {\n seed = seeds[i];\n target = map.get(seed);\n\n target === undefined && map.set(seed, target = (i ? new Map() : factory(env)))\n\n map = target;\n }\n\n return target;\n};\n\nconst adapter = getFetch();\n\nexport default adapter;\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport * as fetchAdapter from './fetch.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\n/**\n * Known adapters mapping.\n * Provides environment-specific adapters for Axios:\n * - `http` for Node.js\n * - `xhr` for browsers\n * - `fetch` for fetch API-based requests\n * \n * @type {Object}\n */\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter,\n fetch: {\n get: fetchAdapter.getFetch,\n }\n};\n\n// Assign adapter names for easier debugging and identification\nutils.forEach(knownAdapters, (fn, value) => {\n if (fn) {\n try {\n Object.defineProperty(fn, 'name', { value });\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', { value });\n }\n});\n\n/**\n * Render a rejection reason string for unknown or unsupported adapters\n * \n * @param {string} reason\n * @returns {string}\n */\nconst renderReason = (reason) => `- ${reason}`;\n\n/**\n * Check if the adapter is resolved (function, null, or false)\n * \n * @param {Function|null|false} adapter\n * @returns {boolean}\n */\nconst isResolvedHandle = (adapter) => utils.isFunction(adapter) || adapter === null || adapter === false;\n\n/**\n * Get the first suitable adapter from the provided list.\n * Tries each adapter in order until a supported one is found.\n * Throws an AxiosError if no adapter is suitable.\n * \n * @param {Array|string|Function} adapters - Adapter(s) by name or function.\n * @param {Object} config - Axios request configuration\n * @throws {AxiosError} If no suitable adapter is available\n * @returns {Function} The resolved adapter function\n */\nfunction getAdapter(adapters, config) {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const { length } = adapters;\n let nameOrAdapter;\n let adapter;\n\n const rejectedReasons = {};\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n let id;\n\n adapter = nameOrAdapter;\n\n if (!isResolvedHandle(nameOrAdapter)) {\n adapter = knownAdapters[(id = String(nameOrAdapter)).toLowerCase()];\n\n if (adapter === undefined) {\n throw new AxiosError(`Unknown adapter '${id}'`);\n }\n }\n\n if (adapter && (utils.isFunction(adapter) || (adapter = adapter.get(config)))) {\n break;\n }\n\n rejectedReasons[id || '#' + i] = adapter;\n }\n\n if (!adapter) {\n const reasons = Object.entries(rejectedReasons)\n .map(([id, state]) => `adapter ${id} ` +\n (state === false ? 'is not supported by the environment' : 'is not available in the build')\n );\n\n let s = length ?\n (reasons.length > 1 ? 'since :\\n' + reasons.map(renderReason).join('\\n') : ' ' + renderReason(reasons[0])) :\n 'as no adapter specified';\n\n throw new AxiosError(\n `There is no suitable adapter to dispatch the request ` + s,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n return adapter;\n}\n\n/**\n * Exports Axios adapters and utility to resolve an adapter\n */\nexport default {\n /**\n * Resolve an adapter from a list of adapter names or functions.\n * @type {Function}\n */\n getAdapter,\n\n /**\n * Exposes all known adapters\n * @type {Object}\n */\n adapters: knownAdapters\n};\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter, config);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","export const VERSION = \"1.13.5\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\nvalidators.spelling = function spelling(correctSpelling) {\n return (value, opt) => {\n // eslint-disable-next-line no-console\n console.warn(`${opt} is likely a misspelling of ${correctSpelling}`);\n return true;\n }\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\nimport transitionalDefaults from '../defaults/transitional.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig || {};\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n async request(configOrUrl, config) {\n try {\n return await this._request(configOrUrl, config);\n } catch (err) {\n if (err instanceof Error) {\n let dummy = {};\n\n Error.captureStackTrace ? Error.captureStackTrace(dummy) : (dummy = new Error());\n\n // slice off the Error: ... line\n const stack = dummy.stack ? dummy.stack.replace(/^.+\\n/, '') : '';\n try {\n if (!err.stack) {\n err.stack = stack;\n // match without the 2 top stack lines\n } else if (stack && !String(err.stack).endsWith(stack.replace(/^.+\\n.+\\n/, ''))) {\n err.stack += '\\n' + stack\n }\n } catch (e) {\n // ignore the case where \"stack\" is an un-writable property\n }\n }\n\n throw err;\n }\n }\n\n _request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean),\n legacyInterceptorReqResOrdering: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.allowAbsoluteUrls\n if (config.allowAbsoluteUrls !== undefined) {\n // do nothing\n } else if (this.defaults.allowAbsoluteUrls !== undefined) {\n config.allowAbsoluteUrls = this.defaults.allowAbsoluteUrls;\n } else {\n config.allowAbsoluteUrls = true;\n }\n\n validator.assertOptions(config, {\n baseUrl: validators.spelling('baseURL'),\n withXsrfToken: validators.spelling('withXSRFToken')\n }, true);\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n // Flatten headers\n let contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n headers && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n const transitional = config.transitional || transitionalDefaults;\n const legacyInterceptorReqResOrdering = transitional && transitional.legacyInterceptorReqResOrdering;\n\n if (legacyInterceptorReqResOrdering) {\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n } else {\n requestInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n }\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift(...requestInterceptorChain);\n chain.push(...responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url, config.allowAbsoluteUrls);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n toAbortSignal() {\n const controller = new AbortController();\n\n const abort = (err) => {\n controller.abort(err);\n };\n\n this.subscribe(abort);\n\n controller.signal.unsubscribe = () => this.unsubscribe(abort);\n\n return controller.signal;\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * const args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n WebServerIsDown: 521,\n ConnectionTimedOut: 522,\n OriginIsUnreachable: 523,\n TimeoutOccurred: 524,\n SslHandshakeFailed: 525,\n InvalidSslCertificate: 526,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport adapters from './adapters/adapters.js';\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.getAdapter = adapters.getAdapter;\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","import axios from './lib/axios.js';\n\n// This module is intended to unwrap Axios default export as named.\n// Keep top-level export same with static properties\n// so that it can keep same with es module or cjs\nconst {\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n} = axios;\n\nexport {\n axios as default,\n Axios,\n AxiosError,\n CanceledError,\n isCancel,\n CancelToken,\n VERSION,\n all,\n Cancel,\n isAxiosError,\n spread,\n toFormData,\n AxiosHeaders,\n HttpStatusCode,\n formToJSON,\n getAdapter,\n mergeConfig\n}\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.13.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","bind","fn","thisArg","toString","getPrototypeOf","iterator","toStringTag","kindOf","cache","thing","str","kindOfTest","type","typeOfTest","isArray","isUndefined","isBuffer","val","isFunction","isArrayBuffer","isArrayBufferView","result","isString","isNumber","isObject","isBoolean","isPlainObject","prototype","isEmptyObject","isDate","isFile","isBlob","isFileList","isStream","isFormData","kind","isURLSearchParams","isReadableStream","isRequest","isResponse","isHeaders","trim","forEach","obj","fn","allOwnKeys","i","l","keys","len","key","findKey","_key","_global","isContextDefined","context","merge","caseless","skipUndefined","assignValue","targetKey","extend","a","b","thisArg","bind","stripBOM","content","inherits","constructor","superConstructor","props","descriptors","toFlatObject","sourceObj","destObj","filter","propFilter","prop","merged","endsWith","searchString","position","lastIndex","toArray","arr","isTypedArray","TypedArray","forEachEntry","_iterator","pair","matchAll","regExp","matches","isHTMLForm","toCamelCase","m","p1","p2","hasOwnProperty","isRegExp","reduceDescriptors","reducer","reducedDescriptors","descriptor","name","ret","freezeMethods","value","toObjectSet","arrayOrString","delimiter","define","noop","toFiniteNumber","defaultValue","isSpecCompliantForm","toJSONObject","stack","visit","source","target","reducedValue","isAsyncFn","isThenable","_setImmediate","setImmediateSupported","postMessageSupported","token","callbacks","data","cb","asap","isIterable","utils_default","AxiosError","_AxiosError","error","code","config","request","response","customProps","axiosError","message","utils_default","AxiosError_default","null_default","isVisitable","thing","utils_default","removeBrackets","key","renderKey","path","dots","token","i","isFlatArray","arr","predicates","prop","toFormData","obj","formData","options","null_default","option","source","metaTokens","visitor","defaultVisitor","indexes","useBlob","convertValue","value","AxiosError_default","el","index","stack","exposedHelpers","build","toFormData_default","encode","str","charMap","match","AxiosURLSearchParams","params","options","toFormData_default","prototype","name","value","encoder","_encode","pair","AxiosURLSearchParams_default","encode","val","buildURL","url","params","options","_encode","_options","utils_default","serializeFn","serializedParams","AxiosURLSearchParams_default","hashmarkIndex","InterceptorManager","fulfilled","rejected","options","id","fn","utils_default","h","InterceptorManager_default","transitional_default","URLSearchParams_default","AxiosURLSearchParams_default","FormData_default","Blob_default","browser_default","URLSearchParams_default","FormData_default","Blob_default","utils_exports","__export","hasBrowserEnv","hasStandardBrowserEnv","hasStandardBrowserWebWorkerEnv","_navigator","origin","platform_default","utils_exports","browser_default","toURLEncodedForm","data","options","toFormData_default","platform_default","value","key","path","helpers","utils_default","parsePropPath","name","utils_default","match","arrayToObject","arr","obj","keys","i","len","key","formDataToJSON","formData","buildPath","path","value","target","index","isNumericKey","isLast","formDataToJSON_default","stringifySafely","rawValue","parser","encoder","utils_default","e","defaults","transitional_default","data","headers","contentType","hasJSONContentType","isObjectPayload","formDataToJSON_default","isFileList","toURLEncodedForm","_FormData","toFormData_default","transitional","forcedJSONParsing","JSONRequested","strictJSONParsing","AxiosError_default","platform_default","status","method","defaults_default","ignoreDuplicateOf","utils_default","parseHeaders_default","rawHeaders","parsed","key","val","i","line","$internals","normalizeHeader","header","normalizeValue","value","utils_default","parseTokens","str","tokens","tokensRE","match","isValidHeaderName","matchHeaderValue","context","filter","isHeaderNameFilter","formatHeader","w","char","buildAccessors","obj","accessorName","methodName","arg1","arg2","arg3","AxiosHeaders","headers","valueOrRewrite","rewrite","self","setHeader","_value","_header","_rewrite","lHeader","key","setHeaders","parseHeaders_default","dest","entry","parser","matcher","deleted","deleteHeader","keys","i","format","normalized","targets","asStrings","thing","first","computed","target","accessors","prototype","defineAccessor","mapped","headerValue","AxiosHeaders_default","transformData","fns","response","config","defaults_default","context","headers","AxiosHeaders_default","data","utils_default","fn","isCancel","value","CanceledError","AxiosError_default","message","config","request","CanceledError_default","settle","resolve","reject","response","validateStatus","AxiosError_default","parseProtocol","url","match","speedometer","samplesCount","min","bytes","timestamps","head","tail","firstSampleTS","chunkLength","now","startedAt","i","bytesCount","passed","speedometer_default","throttle","fn","freq","timestamp","threshold","lastArgs","timer","invoke","args","now","passed","throttle_default","progressEventReducer","listener","isDownloadStream","freq","bytesNotified","_speedometer","speedometer_default","throttle_default","e","loaded","total","progressBytes","rate","inRange","data","progressEventDecorator","throttled","lengthComputable","asyncDecorator","fn","args","utils_default","isURLSameOrigin_default","platform_default","origin","isMSIE","url","cookies_default","platform_default","name","value","expires","path","domain","secure","sameSite","cookie","utils_default","match","isAbsoluteURL","url","combineURLs","baseURL","relativeURL","buildFullPath","baseURL","requestedURL","allowAbsoluteUrls","isRelativeUrl","isAbsoluteURL","combineURLs","headersToObject","thing","AxiosHeaders_default","mergeConfig","config1","config2","config","getMergedValue","target","source","prop","caseless","utils_default","mergeDeepProperties","a","b","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","merge","configValue","resolveConfig_default","config","newConfig","mergeConfig","data","withXSRFToken","xsrfHeaderName","xsrfCookieName","headers","auth","AxiosHeaders_default","buildURL","buildFullPath","utils_default","platform_default","formHeaders","allowedHeaders","key","val","isURLSameOrigin_default","xsrfValue","cookies_default","isXHRAdapterSupported","xhr_default","config","resolve","reject","_config","resolveConfig_default","requestData","requestHeaders","AxiosHeaders_default","responseType","onUploadProgress","onDownloadProgress","onCanceled","uploadThrottled","downloadThrottled","flushUpload","flushDownload","done","request","onloadend","responseHeaders","response","settle","value","err","AxiosError_default","event","msg","timeoutErrorMessage","transitional","transitional_default","utils_default","val","key","progressEventReducer","cancel","CanceledError_default","protocol","parseProtocol","platform_default","composeSignals","signals","timeout","length","controller","aborted","onabort","reason","unsubscribe","err","AxiosError_default","CanceledError_default","timer","signal","utils_default","composeSignals_default","streamChunk","chunk","chunkSize","len","pos","end","readBytes","iterable","readStream","stream","reader","done","value","trackStream","onProgress","onFinish","iterator","bytes","_onFinish","e","controller","loadedBytes","err","reason","DEFAULT_CHUNK_SIZE","isFunction","utils_default","globalFetchAPI","Request","Response","ReadableStream","TextEncoder","test","fn","args","factory","env","envFetch","isFetchSupported","isRequestSupported","isResponseSupported","isReadableStreamSupported","encodeText","encoder","str","supportsRequestStream","duplexAccessed","hasContentType","platform_default","supportsResponseStream","resolvers","res","type","config","method","AxiosError_default","getBodyLength","body","resolveBodyLength","headers","length","url","data","signal","cancelToken","timeout","onDownloadProgress","onUploadProgress","responseType","withCredentials","fetchOptions","resolveConfig_default","_fetch","composedSignal","composeSignals_default","request","unsubscribe","requestContentLength","_request","contentTypeHeader","onProgress","flush","progressEventDecorator","progressEventReducer","asyncDecorator","trackStream","isCredentialsSupported","resolvedOptions","response","isStreamResponse","options","prop","responseContentLength","responseData","resolve","reject","settle","AxiosHeaders_default","err","seedCache","getFetch","fetch","seeds","len","i","seed","target","map","adapter","knownAdapters","null_default","xhr_default","getFetch","utils_default","fn","value","renderReason","reason","isResolvedHandle","adapter","getAdapter","adapters","config","length","nameOrAdapter","rejectedReasons","id","AxiosError_default","reasons","state","s","adapters_default","throwIfCancellationRequested","config","CanceledError_default","dispatchRequest","AxiosHeaders_default","transformData","adapters_default","defaults_default","response","reason","isCancel","VERSION","validators","type","i","thing","deprecatedWarnings","validator","version","message","formatMessage","opt","desc","VERSION","value","opts","AxiosError_default","correctSpelling","assertOptions","options","schema","allowUnknown","keys","result","validator_default","validators","validator_default","Axios","instanceConfig","InterceptorManager_default","configOrUrl","config","err","dummy","stack","mergeConfig","transitional","paramsSerializer","headers","utils_default","contextHeaders","method","AxiosHeaders_default","requestInterceptorChain","synchronousRequestInterceptors","interceptor","transitional_default","responseInterceptorChain","promise","i","len","chain","dispatchRequest","newConfig","onFulfilled","onRejected","error","fullPath","buildFullPath","buildURL","url","generateHTTPMethod","isForm","data","Axios_default","CancelToken","_CancelToken","executor","resolvePromise","resolve","token","cancel","i","onfulfilled","_resolve","promise","message","config","request","CanceledError_default","listener","index","controller","abort","err","c","CancelToken_default","spread","callback","arr","isAxiosError","payload","utils_default","HttpStatusCode","key","value","HttpStatusCode_default","createInstance","defaultConfig","context","Axios_default","instance","bind","utils_default","instanceConfig","mergeConfig","axios","defaults_default","CanceledError_default","CancelToken_default","isCancel","VERSION","toFormData_default","AxiosError_default","promises","spread","isAxiosError","AxiosHeaders_default","thing","formDataToJSON_default","adapters_default","HttpStatusCode_default","axios_default","Axios","AxiosError","CanceledError","isCancel","CancelToken","VERSION","all","Cancel","isAxiosError","spread","toFormData","AxiosHeaders","HttpStatusCode","formToJSON","getAdapter","mergeConfig","axios_default","NlicError","_NlicError","AxiosError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axiosInstance","axios_default","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.js b/dist/index.js index 2de83d5..de2ce55 100644 --- a/dist/index.js +++ b/dist/index.js @@ -1,2 +1,2 @@ -"use strict";var wt=Object.create;var ee=Object.defineProperty;var Ut=Object.getOwnPropertyDescriptor;var jt=Object.getOwnPropertyNames;var kt=Object.getPrototypeOf,Vt=Object.prototype.hasOwnProperty;var $t=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of jt(e))!Vt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=Ut(e,i))||t.enumerable});return n};var Bt=(n,e,o)=>(o=n!=null?wt(kt(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),qt=n=>Ye(ee({},"__esModule",{value:!0}),n);var Nn={};$t(Nn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>ht,Constants:()=>u,Context:()=>Ot,Country:()=>se,License:()=>w,LicenseService:()=>It,LicenseTemplate:()=>ce,LicenseTemplateService:()=>Lt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>Nt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>bt,Page:()=>y,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Rt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>fe,ProductModuleService:()=>Ct,ProductService:()=>xt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>le,TokenService:()=>St,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>At,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>Mt,ValidationParameters:()=>_t,ValidationResults:()=>Ee,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Dt,filterEncode:()=>E,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>j,itemToTransaction:()=>O,serialize:()=>D});module.exports=qt(Nn);var Yt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Yt;var Ft=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=Ft;var Ht=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Ht;var Kt=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Kt;var zt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=zt;var Gt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Gt;var Jt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=Jt;var Wt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Wt;var Qt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Qt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Xt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Xt;var Zt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Zt;var en=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=en;var tn=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=tn;var nn=n=>{try{return JSON.parse(n)}catch{return n}},on=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=nn(t)}),e},sn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...on(n.property),...sn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var rn=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return xe(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(h=>{h(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=rn;var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var We=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},We)},se=We;var re=n=>se(P(n));var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},w=Qe;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},st)},fe=st;var M=n=>fe(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},rt)},le=rt;var j=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),le(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=z({number:s}),f=w({number:a});return Te(d,f)})),z(e)};var ct=Bt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},ft=()=>mt,Me=n=>{ut=n},lt=()=>ut;var Oe={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var k=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ge(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let f=await d(a),l=f.data.infos?.info||[];if(Ae(f),Me(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let h=l.find(({type:L})=>L==="ERROR");if(h)throw new v(h.value,h.id,f.config,f.request,f)}return f}catch(f){let l=f,h=l.response,L=h?.data?.infos?.info||[];if(Ae(h||null),Me(L),f.isAxiosError){let b=f.message;if(h?.data&&L.length>0){let $=L.find(({type:B})=>B==="ERROR");$&&(b=$.value)}throw new v(b,l.code,l.config,l.request,l.response)}throw f}};var Tt=(n,e,o,t)=>k(n,"get",e,o,t),Pt=(n,e,o,t)=>k(n,"post",e,o,t),gt=(n,e,o,t)=>k(n,"delete",e,o,t);var cn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return ft()},getInfo(){return lt()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return k(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=cn;var yt=";",Et="=",E=n=>Object.keys(n).map(e=>`${e}${Et}${String(n[e])}`).join(yt),Dt=n=>{let e={};return n.split(yt).forEach(o=>{let[t,i]=o.split(Et);e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var vt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,h){return Reflect.set(d,f,l,h)},getPrototypeOf(){return vt.prototype||null}})},y=vt;var V=u.Bundle.ENDPOINT_PATH,dn=u.Bundle.ENDPOINT_OBTAIN_PATH,ye=u.Bundle.TYPE,mn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${V}/${e}`,{},o)).data.items?.item.find(s=>s.type===ye);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,V,t,o)).data.items,a=s?.item.filter(d=>d.type===ye).map(d=>R(d));return y(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,V,e.serialize(),o)).data.items?.item.find(s=>s.type===ye);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${V}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ye);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${V}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${V}/${e}/${dn}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>I(f))||[]}},ht=mn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Ee=()=>new we;var _=u.Licensee.ENDPOINT_PATH,un=u.Licensee.ENDPOINT_PATH_VALIDATE,pn=u.Licensee.ENDPOINT_PATH_TRANSFER,De=u.Licensee.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===De);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,_,t,o)).data.items,a=s?.item.filter(d=>d.type===De).map(d=>C(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===De);return C(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===De);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let h=o.licenseeProperties;Object.keys(h).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let L=o.getParameters();Object.keys(L).forEach((b,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=b;let B=L[b];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${un}`,i,t),a=Ee(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${pn}`,i,t)}},Nt=fn;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,J,t,o)).data.items,a=s?.item.filter(d=>d.type===ve).map(d=>I(d));return y(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,J,a,s)).data.items?.item.find(l=>l.type===ve);return I(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(f=>f.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},It=ln;var W=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,W,t,o)).data.items,a=s?.item.filter(d=>d.type===he).map(d=>x(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,W,i,t)).data.items?.item.find(d=>d.type===he);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Lt=Tn;var Q=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Q,t,o)).data.items,a=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return y(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,Q,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},bt=Pn;var Ue=u.PaymentMethod.ENDPOINT_PATH,je=u.PaymentMethod.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Ue,t,o)).data.items,a=s?.item.filter(d=>d.type===je).map(d=>U(d));return y(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===je);return U(s)}},Rt=gn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,X,t,o)).data.items,a=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return y(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},Ct=yn;var Z=u.Product.ENDPOINT_PATH,Le=u.Product.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===Le);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Z,t,o)).data.items,a=s?.item.filter(d=>d.type===Le).map(d=>A(d));return y(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===Le);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Le);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},xt=En;var be=u.Token.ENDPOINT_PATH,ke=u.Token.TYPE,Dn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${be}/${e}`,{},o)).data.items?.item.find(s=>s.type===ke);return j(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,be,t,o)).data.items,a=s?.item.filter(d=>d.type===ke).map(d=>j(d));return y(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,be,e.serialize(),o)).data.items?.item.find(s=>s.type===ke);return j(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${be}/${e}`,{forceCascade:!!o},t)}},St=Dn;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,vn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Re,t,o)).data.items,a=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return y(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ce);return O(s)}},At=vn;var Ve=u.Utility.ENDPOINT_PATH,hn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>re(l));return y(f||[],a)}},Mt=hn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},Ot=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},_t=()=>new Be; +"use strict";var Ot=Object.create;var ee=Object.defineProperty;var _t=Object.getOwnPropertyDescriptor;var wt=Object.getOwnPropertyNames;var Ut=Object.getPrototypeOf,jt=Object.prototype.hasOwnProperty;var kt=(n,e)=>{for(var o in e)ee(n,o,{get:e[o],enumerable:!0})},Ye=(n,e,o,t)=>{if(e&&typeof e=="object"||typeof e=="function")for(let i of wt(e))!jt.call(n,i)&&i!==o&&ee(n,i,{get:()=>e[i],enumerable:!(t=_t(e,i))||t.enumerable});return n};var Vt=(n,e,o)=>(o=n!=null?Ot(Ut(n)):{},Ye(e||!n||!n.__esModule?ee(o,"default",{value:n,enumerable:!0}):o,n)),$t=n=>Ye(ee({},"__esModule",{value:!0}),n);var vn={};kt(vn,{ApiKeyRole:()=>Fe,Bundle:()=>ie,BundleService:()=>Dt,Constants:()=>u,Context:()=>At,Country:()=>se,License:()=>w,LicenseService:()=>ht,LicenseTemplate:()=>ce,LicenseTemplateService:()=>Nt,LicenseTransactionJoin:()=>Te,LicenseType:()=>q,Licensee:()=>ae,LicenseeSecretMode:()=>te,LicenseeService:()=>vt,LicensingModel:()=>He,NlicError:()=>v,NodeSecretMode:()=>Ke,Notification:()=>de,NotificationEvent:()=>Y,NotificationProtocol:()=>F,NotificationService:()=>It,Page:()=>E,PaymentMethod:()=>me,PaymentMethodEnum:()=>ze,PaymentMethodService:()=>Lt,Product:()=>ue,ProductDiscount:()=>pe,ProductModule:()=>fe,ProductModuleService:()=>bt,ProductService:()=>Rt,SecurityMode:()=>N,Service:()=>m,TimeVolumePeriod:()=>ne,Token:()=>le,TokenService:()=>Ct,TokenType:()=>H,Transaction:()=>z,TransactionService:()=>xt,TransactionSource:()=>oe,TransactionStatus:()=>K,UtilityService:()=>St,ValidationParameters:()=>Mt,ValidationResults:()=>ye,defineEntity:()=>g,ensureNotEmpty:()=>p,ensureNotNull:()=>T,filterDecode:()=>Et,filterEncode:()=>y,isDefined:()=>_e,isValid:()=>G,itemToBundle:()=>R,itemToCountry:()=>re,itemToLicense:()=>I,itemToLicenseTemplate:()=>x,itemToLicensee:()=>C,itemToNotification:()=>S,itemToObject:()=>P,itemToPaymentMethod:()=>U,itemToProduct:()=>A,itemToProductModule:()=>M,itemToToken:()=>j,itemToTransaction:()=>O,serialize:()=>D});module.exports=$t(vn);var Bt=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),te=Bt;var qt=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),q=qt;var Yt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),Y=Yt;var Ft=Object.freeze({WEBHOOK:"WEBHOOK"}),F=Ft;var Ht=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=Ht;var Kt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),ne=Kt;var zt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),H=zt;var Gt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),oe=Gt;var Jt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),K=Jt;var u={LicenseeSecretMode:te,LicenseType:q,NotificationEvent:Y,NotificationProtocol:F,SecurityMode:N,TimeVolumePeriod:ne,TokenType:H,TransactionSource:oe,TransactionStatus:K,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:q},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:H},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:F,Event:Y},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:K},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Wt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Fe=Wt;var Qt=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),He=Qt;var Xt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Ke=Xt;var Zt=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),ze=Zt;var en=n=>{try{return JSON.parse(n)}catch{return n}},tn=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=en(t)}),e},nn=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Ge(o))}),e},Ge=n=>n?{...tn(n.property),...nn(n.list)}:{},P=Ge;var xe=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>xe(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var on=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return xe(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(h=>{h(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=on;var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},Je)},ie=Je;var R=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),ie(e)};var We=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},We)},se=We;var re=n=>se(P(n));var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},w=Qe;var I=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),w(e)};var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},Xe)},ae=Xe;var C=n=>ae(P(n));var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ze)},ce=Ze;var x=n=>ce(P(n));var et=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},et)},de=et;var S=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),de(e)};var tt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},tt)},me=tt;var U=n=>me(P(n));var nt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},nt)},ue=nt;var ot=require("axios"),v=class n extends ot.AxiosError{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var it=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new v('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},it,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},pe=it;var A=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>pe(t))),ue(e)};var st=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},st)},fe=st;var M=n=>fe(P(n));var rt=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},rt)},le=rt;var j=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),le(e)};var Se=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Te=(n,e)=>new Se(n,e);var at=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},at)},z=at;var O=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=z({number:s}),f=w({number:a});return Te(d,f)})),z(e)};var ct=Vt(require("axios")),dt=ct.default.create(),mt=null,ut=[],pt=n=>{dt=n},Pe=()=>dt,Ae=n=>{mt=n},ft=()=>mt,Me=n=>{ut=n},lt=()=>ut;var Oe={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.13.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ge=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var k=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Oe.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ge(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Oe.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new v('Missing parameter "username"');if(!n.getPassword())throw new v('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new v('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new v("Unknown security mode")}let d=i?.axiosInstance||Pe();try{let f=await d(a),l=f.data.infos?.info||[];if(Ae(f),Me(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let h=l.find(({type:L})=>L==="ERROR");if(h)throw new v(h.value,h.id,f.config,f.request,f)}return f}catch(f){let l=f,h=l.response,L=h?.data?.infos?.info||[];if(Ae(h||null),Me(L),f.isAxiosError){let b=f.message;if(h?.data&&L.length>0){let $=L.find(({type:B})=>B==="ERROR");$&&(b=$.value)}throw new v(b,l.code,l.config,l.request,l.response)}throw f}};var Tt=(n,e,o,t)=>k(n,"get",e,o,t),Pt=(n,e,o,t)=>k(n,"post",e,o,t),gt=(n,e,o,t)=>k(n,"delete",e,o,t);var rn={setAxiosInstance(n){pt(n)},getAxiosInstance(){return Pe()},getLastHttpRequestInfo(){return ft()},getInfo(){return lt()},get(n,e,o,t){return Tt(n,e,o,t)},post(n,e,o,t){return Pt(n,e,o,t)},delete(n,e,o,t){return gt(n,e,o,t)},request(n,e,o,t,i){return k(n,e,o,t,i)},toQueryString(n){return ge(n)}},m=rn;var y=n=>Object.keys(n).map(e=>`${e}=${String(n[e])}`).join(";"),Et=n=>{let e={};return n.split(";").forEach(o=>{let[t,i]=o.split("=");e[t]=i}),e};var _e=n=>typeof n<"u"&&typeof n!="function",G=n=>_e(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!G(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var yt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,h){return Reflect.set(d,f,l,h)},getPrototypeOf(){return yt.prototype||null}})},E=yt;var V=u.Bundle.ENDPOINT_PATH,an=u.Bundle.ENDPOINT_OBTAIN_PATH,Ee=u.Bundle.TYPE,cn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${V}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ee);return R(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,V,t,o)).data.items,a=s?.item.filter(d=>d.type===Ee).map(d=>R(d));return E(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,V,e.serialize(),o)).data.items?.item.find(s=>s.type===Ee);return R(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${V}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ee);return R(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${V}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${V}/${e}/${an}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>I(f))||[]}},Dt=cn;var we=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!G(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},ye=()=>new we;var _=u.Licensee.ENDPOINT_PATH,dn=u.Licensee.ENDPOINT_PATH_VALIDATE,mn=u.Licensee.ENDPOINT_PATH_TRANSFER,De=u.Licensee.TYPE,un={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_}/${e}`,{},o)).data.items?.item.find(s=>s.type===De);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,_,t,o)).data.items,a=s?.item.filter(d=>d.type===De).map(d=>C(d));return E(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,_,i,t)).data.items?.item.find(d=>d.type===De);return C(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${_}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===De);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${_}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let h=o.licenseeProperties;Object.keys(h).forEach(b=>{i[b]=o.getLicenseeProperty(b)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let L=o.getParameters();Object.keys(L).forEach((b,$)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${$}`]=b;let B=L[b];B&&Object.keys(B).forEach(qe=>{i[qe+$]=B[qe]})})}let s=await m.post(n,`${_}/${e}/${dn}`,i,t),a=ye(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${_}/${e}/${mn}`,i,t)}},vt=un;var J=u.License.ENDPOINT_PATH,ve=u.License.TYPE,pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${J}/${e}`,{},o)).data.items?.item.find(s=>s.type===ve);return I(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,J,t,o)).data.items,a=s?.item.filter(d=>d.type===ve).map(d=>I(d));return E(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,J,a,s)).data.items?.item.find(l=>l.type===ve);return I(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${J}/${e}`,s,i)).data.items?.item.find(f=>f.type===ve);return I(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${J}/${e}`,{forceCascade:!!o},t)}},ht=pn;var W=u.LicenseTemplate.ENDPOINT_PATH,he=u.LicenseTemplate.TYPE,fn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${W}/${e}`,{},o)).data.items?.item.find(s=>s.type===he);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,W,t,o)).data.items,a=s?.item.filter(d=>d.type===he).map(d=>x(d));return E(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,W,i,t)).data.items?.item.find(d=>d.type===he);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${W}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===he);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${W}/${e}`,{forceCascade:!!o},t)}},Nt=fn;var Q=u.Notification.ENDPOINT_PATH,Ne=u.Notification.TYPE,ln={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Q}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,Q,t,o)).data.items,a=s?.item.filter(d=>d.type===Ne).map(d=>S(d));return E(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,Q,e.serialize(),o)).data.items?.item.find(s=>s.type===Ne);return S(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${Q}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ne);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Q}/${e}`,{forceCascade:!!o},t)}},It=ln;var Ue=u.PaymentMethod.ENDPOINT_PATH,je=u.PaymentMethod.TYPE,Tn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Ue}/${e}`,{},o)).data.items?.item.find(s=>s.type===je);return U(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,Ue,t,o)).data.items,a=s?.item.filter(d=>d.type===je).map(d=>U(d));return E(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${Ue}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===je);return U(s)}},Lt=Tn;var X=u.ProductModule.ENDPOINT_PATH,Ie=u.ProductModule.TYPE,Pn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${X}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ie);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,X,t,o)).data.items,a=s?.item.filter(d=>d.type===Ie).map(d=>M(d));return E(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,X,i,t)).data.items?.item.find(d=>d.type===Ie);return M(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${X}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ie);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${X}/${e}`,{forceCascade:!!o},t)}},bt=Pn;var Z=u.Product.ENDPOINT_PATH,Le=u.Product.TYPE,gn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Z}/${e}`,{},o)).data.items?.item.find(s=>s.type===Le);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,Z,t,o)).data.items,a=s?.item.filter(d=>d.type===Le).map(d=>A(d));return E(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,Z,e.serialize(),o)).data.items?.item.find(s=>s.type===Le);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${Z}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Le);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Z}/${e}`,{forceCascade:!!o},t)}},Rt=gn;var be=u.Token.ENDPOINT_PATH,ke=u.Token.TYPE,En={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${be}/${e}`,{},o)).data.items?.item.find(s=>s.type===ke);return j(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,be,t,o)).data.items,a=s?.item.filter(d=>d.type===ke).map(d=>j(d));return E(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,be,e.serialize(),o)).data.items?.item.find(s=>s.type===ke);return j(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${be}/${e}`,{forceCascade:!!o},t)}},Ct=En;var Re=u.Transaction.ENDPOINT_PATH,Ce=u.Transaction.TYPE,yn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Re}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,Re,t,o)).data.items,a=s?.item.filter(d=>d.type===Ce).map(d=>O(d));return E(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,Re,e.serialize(),o)).data.items?.item.find(s=>s.type===Ce);return O(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${Re}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===Ce);return O(s)}},xt=yn;var Ve=u.Utility.ENDPOINT_PATH,Dn={async listLicenseTypes(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return E(a||[],i)},async listLicensingModels(n,e){let o=`${Ve}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return E(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let i=`${Ve}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>re(l));return E(f||[],a)}},St=Dn;var $e=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},At=n=>new $e(n);var Be=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},Mt=()=>new Be; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/dist/index.js.map b/dist/index.js.map index d57ad0c..0a9c5f9 100644 --- a/dist/index.js.map +++ b/dist/index.js.map @@ -1 +1 @@ -{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/index.ts","../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["// constants\r\nimport Constants from '@/constants';\r\nimport ApiKeyRole from '@/constants/ApiKeyRole';\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport LicensingModel from '@/constants/LicensingModel';\r\nimport NodeSecretMode from '@/constants/NodeSecretMode';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport PaymentMethodEnum from '@/constants/PaymentMethodEnum';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\nimport itemToNotification from '@/converters/itemToNotification';\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\nimport itemToProduct from '@/converters/itemToProduct';\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\nimport itemToToken from '@/converters/itemToToken';\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// entities\r\nimport Bundle from '@/entities/Bundle';\r\nimport Country from '@/entities/Country';\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport License from '@/entities/License';\r\nimport Licensee from '@/entities/Licensee';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Notification from '@/entities/Notification';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\nimport ProductModule from '@/entities/ProductModule';\r\nimport Token from '@/entities/Token';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// services\r\nimport BundleService from '@/services/BundleService';\r\nimport LicenseeService from '@/services/LicenseeService';\r\nimport LicenseService from '@/services/LicenseService';\r\nimport LicenseTemplateService from '@/services/LicenseTemplateService';\r\nimport NotificationService from '@/services/NotificationService';\r\nimport PaymentMethodService from '@/services/PaymentMethodService';\r\nimport ProductModuleService from '@/services/ProductModuleService';\r\nimport ProductService from '@/services/ProductService';\r\nimport Service from '@/services/Service';\r\nimport TokenService from '@/services/TokenService';\r\nimport TransactionService from '@/services/TransactionService';\r\nimport UtilityService from '@/services/UtilityService';\r\n\r\n// utils\r\nimport { encode as filterEncode, decode as filterDecode } from '@/utils/filter';\r\nimport serialize from '@/utils/serialize';\r\nimport { isValid, isDefined, ensureNotNull, ensureNotEmpty } from '@/utils/validation';\r\n\r\n// value object\r\nimport Context from '@/vo/Context';\r\nimport Page from '@/vo/Page';\r\nimport ValidationParameters from '@/vo/ValidationParameters';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\n// types\r\nexport type * from '@/types';\r\n\r\nexport {\r\n // constants\r\n Constants,\r\n ApiKeyRole,\r\n LicenseeSecretMode,\r\n LicenseType,\r\n LicensingModel,\r\n NodeSecretMode,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n PaymentMethodEnum,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // converters\r\n itemToBundle,\r\n itemToCountry,\r\n itemToLicense,\r\n itemToLicensee,\r\n itemToLicenseTemplate,\r\n itemToNotification,\r\n itemToObject,\r\n itemToPaymentMethod,\r\n itemToProduct,\r\n itemToProductModule,\r\n itemToToken,\r\n itemToTransaction,\r\n\r\n // entities\r\n Bundle,\r\n Country,\r\n defineEntity,\r\n License,\r\n Licensee,\r\n LicenseTemplate,\r\n LicenseTransactionJoin,\r\n Notification,\r\n PaymentMethod,\r\n Product,\r\n ProductDiscount,\r\n ProductModule,\r\n Token,\r\n Transaction,\r\n\r\n // errors\r\n NlicError,\r\n\r\n // services\r\n BundleService,\r\n LicenseeService,\r\n LicenseService,\r\n LicenseTemplateService,\r\n NotificationService,\r\n PaymentMethodService,\r\n ProductModuleService,\r\n ProductService,\r\n Service,\r\n TokenService,\r\n TransactionService,\r\n UtilityService,\r\n\r\n // utils\r\n filterEncode,\r\n filterDecode,\r\n serialize,\r\n isValid,\r\n isDefined,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n\r\n // vo\r\n Context,\r\n Page,\r\n ValidationParameters,\r\n ValidationResults,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.13.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["index_exports","__export","ApiKeyRole_default","Bundle_default","BundleService_default","constants_default","Context_default","Country_default","License_default","LicenseService_default","LicenseTemplate_default","LicenseTemplateService_default","LicenseTransactionJoin_default","LicenseType_default","Licensee_default","LicenseeSecretMode_default","LicenseeService_default","LicensingModel_default","NlicError","NodeSecretMode_default","Notification_default","NotificationEvent_default","NotificationProtocol_default","NotificationService_default","Page_default","PaymentMethod_default","PaymentMethodEnum_default","PaymentMethodService_default","Product_default","ProductDiscount_default","ProductModule_default","ProductModuleService_default","ProductService_default","SecurityMode_default","Service_default","TimeVolumePeriod_default","Token_default","TokenService_default","TokenType_default","Transaction_default","TransactionService_default","TransactionSource_default","TransactionStatus_default","UtilityService_default","ValidationParameters_default","ValidationResults_default","defineEntity_default","ensureNotEmpty","ensureNotNull","decode","encode","isDefined","isValid","itemToBundle_default","itemToCountry_default","itemToLicense_default","itemToLicenseTemplate_default","itemToLicensee_default","itemToNotification_default","itemToObject_default","itemToPaymentMethod_default","itemToProduct_default","itemToProductModule_default","itemToToken_default","itemToTransaction_default","serialize_default","__toCommonJS","LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","import_axios","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","import_axios","axiosInstance","axios","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/dist/index.mjs b/dist/index.mjs index 30b8e33..87eb3c3 100644 --- a/dist/index.mjs +++ b/dist/index.mjs @@ -1,2 +1,2 @@ -var ft=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=ft;var lt=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=lt;var Tt=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=Tt;var Pt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=Pt;var gt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=gt;var yt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),fe=yt;var Et=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),W=Et;var Dt=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),le=Dt;var vt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),Q=vt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:fe,TokenType:W,TransactionSource:le,TransactionStatus:Q,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:W},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:Q},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var ht=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),Nt=ht;var It=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),Lt=It;var bt=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Rt=bt;var Ct=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),xt=Ct;var St=n=>{try{return JSON.parse(n)}catch{return n}},At=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=St(t)}),e},Mt=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...At(n.property),...Mt(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var Ot=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return Te(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(v=>{v(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=Ot;var qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var ye=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Fe)},V=Fe;var b=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),V(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},He)},Ee=He;var x=n=>Ee(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ke)},De=Ke;var S=n=>De(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as _t}from"axios";var h=class n extends _t{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var We=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},We,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=We;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},Le=Qe;var O=n=>Le(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},Xe)},be=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),be(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=X({number:s}),f=V({number:a});return Ce(d,f)})),X(e)};import wt from"axios";var et=wt.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.9.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ee(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let f=await d(a),l=f.data.infos?.info||[];if(xe(f),Se(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let v=l.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,f.config,f.request,f)}return f}catch(f){let l=f,v=l.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),f.isAxiosError){let L=f.message;if(v?.data&&I.length>0){let j=I.find(({type:k})=>k==="ERROR");j&&(L=j.value)}throw new h(L,l.code,l.config,l.request,l.response)}throw f}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var jt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=jt;var dt=";",mt="=",E=n=>Object.keys(n).map(e=>`${e}${mt}${String(n[e])}`).join(dt),kt=n=>{let e={};return n.split(dt).forEach(o=>{let[t,i]=o.split(mt);e[t]=i}),e};var ut=n=>typeof n<"u"&&typeof n!="function",te=n=>ut(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var pt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,v){return Reflect.set(d,f,l,v)},getPrototypeOf(){return pt.prototype||null}})},y=pt;var U=u.Bundle.ENDPOINT_PATH,Vt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,$t={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,U,t,o)).data.items,a=s?.item.filter(d=>d.type===ne).map(d=>C(d));return y(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${Vt}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>b(f))||[]}},Bt=$t;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,qt=u.Licensee.ENDPOINT_PATH_VALIDATE,Yt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,R,t,o)).data.items,a=s?.item.filter(d=>d.type===oe).map(d=>x(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let v=o.licenseeProperties;Object.keys(v).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((L,j)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${j}`]=L;let k=I[L];k&&Object.keys(k).forEach($e=>{i[$e+j]=k[$e]})})}let s=await m.post(n,`${R}/${e}/${qt}`,i,t),a=Oe(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Yt}`,i,t)}},Ht=Ft;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return b(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,q,t,o)).data.items,a=s?.item.filter(d=>d.type===ie).map(d=>b(d));return y(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,q,a,s)).data.items?.item.find(l=>l.type===ie);return b(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(f=>f.type===ie);return b(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,Y,t,o)).data.items,a=s?.item.filter(d=>d.type===se).map(d=>S(d));return y(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Wt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,F,t,o)).data.items,a=s?.item.filter(d=>d.type===re).map(d=>A(d));return y(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Qt=Wt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,_e,t,o)).data.items,a=s?.item.filter(d=>d.type===we).map(d=>$(d));return y(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===we);return $(s)}},Zt=Xt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,H,t,o)).data.items,a=s?.item.filter(d=>d.type===ae).map(d=>O(d));return y(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},tn=en;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,K,t,o)).data.items,a=s?.item.filter(d=>d.type===ce).map(d=>M(d));return y(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},on=nn;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,de,t,o)).data.items,a=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return y(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},rn=sn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,an={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let s=(await m.get(n,me,t,o)).data.items,a=s?.item.filter(d=>d.type===ue).map(d=>_(d));return y(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ue);return _(s)}},cn=an;var je=u.Utility.ENDPOINT_PATH,dn={async listLicenseTypes(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listLicensingModels(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return y(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:E(e));let i=`${je}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>ye(l));return y(f||[],a)}},mn=dn;var ke=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},un=n=>new ke(n);var Ve=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},pn=()=>new Ve;export{Nt as ApiKeyRole,Pe as Bundle,Bt as BundleService,u as Constants,un as Context,ge as Country,V as License,zt as LicenseService,De as LicenseTemplate,Jt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,Ee as Licensee,pe as LicenseeSecretMode,Ht as LicenseeService,Lt as LicensingModel,h as NlicError,Rt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Qt as NotificationService,y as Page,he as PaymentMethod,xt as PaymentMethodEnum,Zt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,Le as ProductModule,tn as ProductModuleService,on as ProductService,N as SecurityMode,m as Service,fe as TimeVolumePeriod,be as Token,rn as TokenService,W as TokenType,X as Transaction,cn as TransactionService,le as TransactionSource,Q as TransactionStatus,mn as UtilityService,pn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,kt as filterDecode,E as filterEncode,ut as isDefined,te as isValid,C as itemToBundle,ye as itemToCountry,b as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,D as serialize}; +var ut=Object.freeze({DISABLED:"DISABLED",PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),pe=ut;var pt=Object.freeze({FEATURE:"FEATURE",TIMEVOLUME:"TIMEVOLUME",FLOATING:"FLOATING",QUANTITY:"QUANTITY"}),z=pt;var ft=Object.freeze({LICENSEE_CREATED:"LICENSEE_CREATED",LICENSE_CREATED:"LICENSE_CREATED",WARNING_LEVEL_CHANGED:"WARNING_LEVEL_CHANGED",PAYMENT_TRANSACTION_PROCESSED:"PAYMENT_TRANSACTION_PROCESSED"}),G=ft;var lt=Object.freeze({WEBHOOK:"WEBHOOK"}),J=lt;var Tt=Object.freeze({BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS"}),N=Tt;var Pt=Object.freeze({DAY:"DAY",WEEK:"WEEK",MONTH:"MONTH",YEAR:"YEAR"}),fe=Pt;var gt=Object.freeze({DEFAULT:"DEFAULT",SHOP:"SHOP",APIKEY:"APIKEY",ACTION:"ACTION"}),W=gt;var Et=Object.freeze({SHOP:"SHOP",AUTO_LICENSE_CREATE:"AUTO_LICENSE_CREATE",AUTO_LICENSE_UPDATE:"AUTO_LICENSE_UPDATE",AUTO_LICENSE_DELETE:"AUTO_LICENSE_DELETE",AUTO_LICENSEE_CREATE:"AUTO_LICENSEE_CREATE",AUTO_LICENSEE_DELETE:"AUTO_LICENSEE_DELETE",AUTO_LICENSEE_VALIDATE:"AUTO_LICENSEE_VALIDATE",AUTO_LICENSETEMPLATE_DELETE:"AUTO_LICENSETEMPLATE_DELETE",AUTO_PRODUCTMODULE_DELETE:"AUTO_PRODUCTMODULE_DELETE",AUTO_PRODUCT_DELETE:"AUTO_PRODUCT_DELETE",AUTO_LICENSES_TRANSFER:"AUTO_LICENSES_TRANSFER",SUBSCRIPTION_UPDATE:"SUBSCRIPTION_UPDATE",RECURRING_PAYMENT:"RECURRING_PAYMENT",CANCEL_RECURRING_PAYMENT:"CANCEL_RECURRING_PAYMENT",OBTAIN_BUNDLE:"OBTAIN_BUNDLE"}),le=Et;var yt=Object.freeze({PENDING:"PENDING",CLOSED:"CLOSED",CANCELLED:"CANCELLED"}),Q=yt;var u={LicenseeSecretMode:pe,LicenseType:z,NotificationEvent:G,NotificationProtocol:J,SecurityMode:N,TimeVolumePeriod:fe,TokenType:W,TransactionSource:le,TransactionStatus:Q,BASIC_AUTHENTICATION:"BASIC_AUTH",APIKEY_IDENTIFICATION:"APIKEY",ANONYMOUS_IDENTIFICATION:"ANONYMOUS",FILTER:"filter",Product:{TYPE:"Product",ENDPOINT_PATH:"product"},ProductModule:{TYPE:"ProductModule",ENDPOINT_PATH:"productmodule",PRODUCT_MODULE_NUMBER:"productModuleNumber"},Licensee:{TYPE:"Licensee",ENDPOINT_PATH:"licensee",ENDPOINT_PATH_VALIDATE:"validate",ENDPOINT_PATH_TRANSFER:"transfer",LICENSEE_NUMBER:"licenseeNumber"},LicenseTemplate:{TYPE:"LicenseTemplate",ENDPOINT_PATH:"licensetemplate",LicenseType:z},License:{TYPE:"License",ENDPOINT_PATH:"license"},Validation:{TYPE:"ProductModuleValidation"},Token:{TYPE:"Token",ENDPOINT_PATH:"token",Type:W},PaymentMethod:{TYPE:"PaymentMethod",ENDPOINT_PATH:"paymentmethod"},Bundle:{TYPE:"Bundle",ENDPOINT_PATH:"bundle",ENDPOINT_OBTAIN_PATH:"obtain"},Notification:{TYPE:"Notification",ENDPOINT_PATH:"notification",Protocol:J,Event:G},Transaction:{TYPE:"Transaction",ENDPOINT_PATH:"transaction",Status:Q},Utility:{ENDPOINT_PATH:"utility",ENDPOINT_PATH_LICENSE_TYPES:"licenseTypes",ENDPOINT_PATH_LICENSING_MODELS:"licensingModels",ENDPOINT_PATH_COUNTRIES:"countries",LICENSING_MODEL_TYPE:"LicensingModelProperties",LICENSE_TYPE:"LicenseType",COUNTRY_TYPE:"Country"}};var Dt=Object.freeze({ROLE_APIKEY_LICENSEE:"ROLE_APIKEY_LICENSEE",ROLE_APIKEY_ANALYTICS:"ROLE_APIKEY_ANALYTICS",ROLE_APIKEY_OPERATION:"ROLE_APIKEY_OPERATION",ROLE_APIKEY_MAINTENANCE:"ROLE_APIKEY_MAINTENANCE",ROLE_APIKEY_ADMIN:"ROLE_APIKEY_ADMIN"}),vt=Dt;var ht=Object.freeze({TRY_AND_BUY:"TryAndBuy",SUBSCRIPTION:"Subscription",RENTAL:"Rental",FLOATING:"Floating",MULTI_FEATURE:"MultiFeature",PAY_PER_USE:"PayPerUse",PRICING_TABLE:"PricingTable",QUOTA:"Quota",NODE_LOCKED:"NodeLocked",DISCOUNT:"Discount"}),Nt=ht;var It=Object.freeze({PREDEFINED:"PREDEFINED",CLIENT:"CLIENT"}),Lt=It;var bt=Object.freeze({NULL:"NULL",PAYPAL:"PAYPAL",PAYPAL_SANDBOX:"PAYPAL_SANDBOX",STRIPE:"STRIPE",STRIPE_TESTING:"STRIPE_TESTING"}),Rt=bt;var Ct=n=>{try{return JSON.parse(n)}catch{return n}},xt=n=>{let e={};return n?.forEach(({name:o,value:t})=>{e[o]=Ct(t)}),e},St=n=>{let e={};return n?.forEach(o=>{let{name:t}=o;e[t]=e[t]||[],e[t].push(Be(o))}),e},Be=n=>n?{...xt(n.property),...St(n.list)}:{},P=Be;var Te=(n,e)=>Object.hasOwn(n,e),c=(n,e,o)=>{n[e]=o},r=(n,e,o)=>Te(n,e)?n[e]:o;var D=(n,e={})=>{let o={},{ignore:t=[]}=e;return Object.entries(n).forEach(([i,s])=>{if(!t.includes(i)&&typeof s!="function")if(s===void 0)o[i]="";else if(typeof s=="string")o[i]=s;else if(s instanceof Date)o[i]=s.toISOString();else if(typeof s!="object"||s===null)o[i]=String(s);else try{o[i]=JSON.stringify(s)}catch{o[i]=String(s)}}),o};var At=function(n,e,o={},t){let i={set:[],get:[]};t?.get&&i.get.push(t.get),t?.set&&i.set.push(t.set);let s={set(a,d){c(n,a,d)},get(a,d){return r(n,a,d)},has(a){return Te(n,a)},setProperty(a,d){this.set(a,d)},addProperty(a,d){this.set(a,d)},getProperty(a,d){return this.get(a,d)},hasProperty(a){return this.has(a)},setProperties(a){Object.entries(a).forEach(([d,f])=>{this.set(d,f)})},serialize(){return D(n)}};return new Proxy(n,{get(a,d,f){return Object.hasOwn(e,d)?e[d]:Object.hasOwn(s,d)?s[d]:(i.get.forEach(l=>{l(a,d,f)}),Reflect.get(a,d,f))},set(a,d,f,l){return i.set.forEach(v=>{v(a,d,f,l)}),Reflect.set(a,d,f,l)},getPrototypeOf(){return o.prototype||null}})},g=At;var qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setLicenseTemplateNumbers(t){c(e,"licenseTemplateNumbers",t)},addLicenseTemplateNumber(t){e.licenseTemplateNumbers||(e.licenseTemplateNumbers=[]),e.licenseTemplateNumbers.push(t)},getLicenseTemplateNumbers(t){return r(e,"licenseTemplateNumbers",t)},removeLicenseTemplateNumber(t){let{licenseTemplateNumbers:i=[]}=e;i.splice(i.indexOf(t),1),e.licenseTemplateNumbers=i},getStaleLicenseTemplateNumbers(t){return r(e,"staleLicenseTemplateNumbers",t)},serialize(){let t={};return e.licenseTemplateNumbers&&(t.licenseTemplateNumbers=e.licenseTemplateNumbers.join(",")),D({...e,...t},{ignore:["staleLicenseTemplateNumbers"]})}},qe)},Pe=qe;var C=n=>{let e=P(n),{licenseTemplateNumbers:o}=e;return o&&typeof o=="string"&&(e.licenseTemplateNumbers=o.split(",")),Pe(e)};var Ye=function(n={}){let o={...{code:"",name:"",vatPercent:0,isEu:!1},...n};return g(o,{getCode(){return o.code},getName(){return o.name},getVatPercent(){return o.vatPercent},getIsEu(){return o.isEu}},Ye)},ge=Ye;var Ee=n=>ge(P(n));var Fe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setLicenseTemplateNumber(t){c(e,"licenseTemplateNumber",t)},getLicenseTemplateNumber(t){return r(e,"licenseTemplateNumber",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Fe)},V=Fe;var b=n=>{let e=P(n),{startDate:o}=e;return o&&typeof o=="string"&&(e.startDate=o==="now"?o:new Date(o)),V(e)};var He=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setMarkedForTransfer(t){c(e,"markedForTransfer",t)},getMarkedForTransfer(t){return r(e,"markedForTransfer",t)},serialize(){return D(e,{ignore:["inUse"]})}},He)},ye=He;var x=n=>ye(P(n));var Ke=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicenseType(t){c(e,"licenseType",t)},getLicenseType(t){return r(e,"licenseType",t)},setPrice(t){c(e,"price",t)},getPrice(t){return r(e,"price",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAutomatic(t){c(e,"automatic",t)},getAutomatic(t){return r(e,"automatic",t)},setHidden(t){c(e,"hidden",t)},getHidden(t){return r(e,"hidden",t)},setHideLicenses(t){c(e,"hideLicenses",t)},getHideLicenses(t){return r(e,"hideLicenses",t)},setProductModuleNumber(t){c(e,"productModuleNumber",t)},getProductModuleNumber(t){return r(e,"productModuleNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Ke)},De=Ke;var S=n=>De(P(n));var ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setProtocol(t){c(e,"protocol",t)},getProtocol(t){return r(e,"protocol",t)},setEvents(t){c(e,"events",t)},getEvents(t){return r(e,"events",t)},addEvent(t){let i=this.getEvents([]);i.push(t),this.setEvents(i)},setPayload(t){c(e,"payload",t)},getPayload(t){return r(e,"payload",t)},setEndpoint(t){c(e,"endpoint",t)},getEndpoint(t){return r(e,"endpoint",t)},serialize(){let t=D(e);return t.events&&(t.events=this.getEvents([]).join(",")),t}},ze)},ve=ze;var A=n=>{let e=P(n),{events:o}=e;return o&&typeof o=="string"&&(e.events=o.split(",")),ve(e)};var Ge=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)}},Ge)},he=Ge;var $=n=>he(P(n));var Je=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setVersion(t){c(e,"version",t)},getVersion(t){return r(e,"version",t)},setDescription(t){c(e,"description",t)},getDescription(t){return r(e,"description",t)},setLicensingInfo(t){c(e,"licensingInfo",t)},getLicensingInfo(t){return r(e,"licensingInfo",t)},setLicenseeAutoCreate(t){c(e,"licenseeAutoCreate",t)},getLicenseeAutoCreate(t){return r(e,"licenseeAutoCreate",t)},setDiscounts(t){c(e,"discounts",t)},getDiscounts(t){return r(e,"discounts",t)},addDiscount(t){let i=this.getDiscounts([]);i.push(t),this.setDiscounts(i)},removeDiscount(t){let i=this.getDiscounts();Array.isArray(i)&&i.length>0&&(i.splice(i.indexOf(t),1),this.setDiscounts(i))},setProductDiscounts(t){this.setDiscounts(t)},getProductDiscounts(t){return this.getDiscounts(t)},serialize(){let t=D(e,{ignore:["discounts","inUse"]}),i=this.getDiscounts();return i&&(t.discount=i.length>0?i.map(s=>s.toString()):""),t}},Je)},Ne=Je;import{AxiosError as Mt}from"axios";var h=class n extends Mt{constructor(o,t,i,s,a,d){super(o,t,i,s,a);this.isNlicError=!0;this.name="NlicError",d&&(this.stack=d),Object.setPrototypeOf(this,n.prototype)}};var We=function(n={}){let e={...n};if(e.amountFix&&e.amountPercent)throw new h('Properties "amountFix" and "amountPercent" cannot be used at the same time');return g(e,{setTotalPrice(t){c(e,"totalPrice",t)},getTotalPrice(t){return r(e,"totalPrice",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setAmountFix(t){c(e,"amountFix",t)},getAmountFix(t){return r(e,"amountFix",t)},setAmountPercent(t){c(e,"amountPercent",t)},getAmountPercent(t){return r(e,"amountPercent",t)},toString(){let t=this.getTotalPrice(),i=this.getCurrency(),s=this.getAmountPercent()?`${this.getAmountPercent()}%`:this.getAmountFix();return t&&i&&s?`${t};${i};${s}`:""}},We,{set:(t,i)=>{i==="amountFix"&&delete t.amountPercent,i==="amountPercent"&&delete t.amountFix}})},Ie=We;var M=n=>{let e=P(n),o=e.discount;return delete e.discount,o&&(e.discounts=o.map(t=>Ie(t))),Ne(e)};var Qe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setName(t){c(e,"name",t)},getName(t){return r(e,"name",t)},setLicensingModel(t){c(e,"licensingModel",t)},getLicensingModel(t){return r(e,"licensingModel",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},serialize(){return D(e,{ignore:["inUse"]})}},Qe)},Le=Qe;var O=n=>Le(P(n));var Xe=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setExpirationTime(t){c(e,"expirationTime",t)},getExpirationTime(t){return r(e,"expirationTime",t)},setTokenType(t){c(e,"tokenType",t)},getTokenType(t){return r(e,"tokenType",t)},setLicenseeNumber(t){c(e,"licenseeNumber",t)},getLicenseeNumber(t){return r(e,"licenseeNumber",t)},setAction(t){c(e,"action",t)},getAction(t){return r(e,"action",t)},setApiKeyRole(t){c(e,"apiKeyRole",t)},getApiKeyRole(t){return r(e,"apiKeyRole",t)},setBundleNumber(t){c(e,"bundleNumber",t)},getBundleNumber(t){return r(e,"bundleNumber",t)},setBundlePrice(t){c(e,"bundlePrice",t)},getBundlePrice(t){return r(e,"bundlePrice",t)},setProductNumber(t){c(e,"productNumber",t)},getProductNumber(t){return r(e,"productNumber",t)},setPredefinedShoppingItem(t){c(e,"predefinedShoppingItem",t)},getPredefinedShoppingItem(t){return r(e,"predefinedShoppingItem",t)},setSuccessURL(t){c(e,"successURL",t)},getSuccessURL(t){return r(e,"successURL",t)},setSuccessURLTitle(t){c(e,"successURLTitle",t)},getSuccessURLTitle(t){return r(e,"successURLTitle",t)},setCancelURL(t){c(e,"cancelURL",t)},getCancelURL(t){return r(e,"cancelURL",t)},setCancelURLTitle(t){c(e,"cancelURLTitle",t)},getCancelURLTitle(t){return r(e,"cancelURLTitle",t)},getShopURL(t){return r(e,"shopURL",t)},serialize(){return D(e,{ignore:["shopURL"]})}},Xe)},be=Xe;var B=n=>{let e=P(n),{expirationTime:o}=e;return o&&typeof o=="string"&&(e.expirationTime=new Date(o)),be(e)};var Re=class{constructor(e,o){this.transaction=e,this.license=o}setTransaction(e){this.transaction=e}getTransaction(){return this.transaction}setLicense(e){this.license=e}getLicense(){return this.license}},Ce=(n,e)=>new Re(n,e);var Ze=function(n={}){let e={...n};return g(e,{setActive(t){c(e,"active",t)},getActive(t){return r(e,"active",t)},setNumber(t){c(e,"number",t)},getNumber(t){return r(e,"number",t)},setStatus(t){c(e,"status",t)},getStatus(t){return r(e,"status",t)},setSource(t){c(e,"source",t)},getSource(t){return r(e,"source",t)},setGrandTotal(t){c(e,"grandTotal",t)},getGrandTotal(t){return r(e,"grandTotal",t)},setDiscount(t){c(e,"discount",t)},getDiscount(t){return r(e,"discount",t)},setCurrency(t){c(e,"currency",t)},getCurrency(t){return r(e,"currency",t)},setDateCreated(t){c(e,"dateCreated",t)},getDateCreated(t){return r(e,"dateCreated",t)},setDateClosed(t){c(e,"dateClosed",t)},getDateClosed(t){return r(e,"dateClosed",t)},setPaymentMethod(t){c(e,"paymentMethod",t)},getPaymentMethod(t){return r(e,"paymentMethod",t)},setLicenseTransactionJoins(t){c(e,"licenseTransactionJoins",t)},getLicenseTransactionJoins(t){return r(e,"licenseTransactionJoins",t)},serialize(){let t={...e};return t.datecreated=e.dateCreated,t.dateclosed=e.dateClosed,delete t.dateCreated,delete t.dateClosed,D(t,{ignore:["licenseTransactionJoins","inUse"]})}},Ze)},X=Ze;var _=n=>{let e=P(n),{datecreated:o,dateclosed:t}=e;o&&typeof o=="string"&&(e.dateCreated=new Date(o),delete e.datecreated),t&&typeof t=="string"&&(e.dateClosed=new Date(t),delete e.dateclosed);let i=e.licenseTransactionJoin;return delete e.licenseTransactionJoin,i&&(e.licenseTransactionJoins=i.map(({transactionNumber:s,licenseNumber:a})=>{let d=X({number:s}),f=V({number:a});return Ce(d,f)})),X(e)};import Ot from"axios";var et=Ot.create(),tt=null,nt=[],ot=n=>{et=n},Z=()=>et,xe=n=>{tt=n},it=()=>tt,Se=n=>{nt=n},st=()=>nt;var Ae={name:"netlicensing-client",version:"2.0.0",description:"JavaScript Wrapper for Labs64 NetLicensing RESTful API",keywords:["labs64","netlicensing","licensing","licensing-as-a-service","license","license-management","software-license","client","restful","restful-api","javascript","wrapper","api","client"],license:"Apache-2.0",author:"Labs64 GmbH",homepage:"https://netlicensing.io",repository:{type:"git",url:"https://github.com/Labs64/NetLicensingClient-javascript"},bugs:{url:"https://github.com/Labs64/NetLicensingClient-javascript/issues"},contributors:[{name:"Ready Brown",email:"ready.brown@hotmail.de",url:"https://github.com/r-brown"},{name:"Viacheslav Rudkovskiy",email:"viachaslau.rudkovski@labs64.de",url:"https://github.com/v-rudkovskiy"},{name:"Andrei Yushkevich",email:"yushkevich@me.com",url:"https://github.com/yushkevich"}],main:"dist/index.cjs",module:"dist/index.mjs",types:"dist/index.d.ts",exports:{".":{types:"./dist/index.d.ts",import:"./dist/index.mjs",require:"./dist/index.cjs"}},files:["dist"],scripts:{build:"tsup",release:"npm run lint:typecheck && npm run test && npm run build",dev:"tsup --watch",test:"vitest run","test:dev":"vitest watch",lint:"eslint --ext .js,.mjs,.ts src",typecheck:"tsc --noEmit","lint:typecheck":"npm run lint && npm run typecheck"},peerDependencies:{axios:"^1.9.0"},dependencies:{},devDependencies:{"@eslint/js":"^9.24.0","@types/node":"^22.14.0","@typescript-eslint/eslint-plugin":"^8.29.1","@typescript-eslint/parser":"^8.29.1","@vitest/eslint-plugin":"^1.1.43",axios:"^1.13.0",eslint:"^9.24.0","eslint-plugin-import":"^2.31.0",prettier:"3.5.3",tsup:"^8.4.0",typescript:"^5.8.3","typescript-eslint":"^8.29.1",vitest:"^3.1.1"},engines:{node:">= 16.9.0",npm:">= 8.0.0"},browserslist:["> 1%","last 2 versions","not ie <= 10"]};var ee=n=>{let e=[],o=(t,i)=>{if(t!=null){if(Array.isArray(t)){t.forEach(s=>{o(s,i?`${i}`:"")});return}if(t instanceof Date){e.push(`${i}=${encodeURIComponent(t.toISOString())}`);return}if(typeof t=="object"){Object.keys(t).forEach(s=>{let a=t[s];o(a,i?`${i}[${encodeURIComponent(s)}]`:encodeURIComponent(s))});return}e.push(`${i}=${encodeURIComponent(t)}`)}};return o(n),e.join("&")};var w=async(n,e,o,t,i)=>{let s={Accept:"application/json","X-Requested-With":"XMLHttpRequest"};typeof process<"u"&&Object.prototype.toString.call(process)==="[object process]"&&(s["User-agent"]=`NetLicensing/Javascript ${Ae.version}/node&${process.version}`);let a={method:e,headers:s,url:encodeURI(`${n.getBaseUrl()}/${o}`),responseType:"json",transformRequest:(f,l)=>l["Content-Type"]==="application/x-www-form-urlencoded"?ee(f):(l["NetLicensing-Origin"]||(l["NetLicensing-Origin"]=`NetLicensing/Javascript ${Ae.version}`),f)};switch(["put","post","patch"].indexOf(e.toLowerCase())>=0?(a.method==="post"&&(s["Content-Type"]="application/x-www-form-urlencoded"),a.data=t):a.params=t,n.getSecurityMode()){case N.BASIC_AUTHENTICATION:{if(!n.getUsername())throw new h('Missing parameter "username"');if(!n.getPassword())throw new h('Missing parameter "password"');a.auth={username:n.getUsername(),password:n.getPassword()}}break;case N.APIKEY_IDENTIFICATION:if(!n.getApiKey())throw new h('Missing parameter "apiKey"');s.Authorization=`Basic ${btoa(`apiKey:${n.getApiKey()}`)}`;break;case N.ANONYMOUS_IDENTIFICATION:break;default:throw new h("Unknown security mode")}let d=i?.axiosInstance||Z();try{let f=await d(a),l=f.data.infos?.info||[];if(xe(f),Se(l),i?.onResponse&&i.onResponse(f),l.length>0){i?.onInfo&&i.onInfo(l);let v=l.find(({type:I})=>I==="ERROR");if(v)throw new h(v.value,v.id,f.config,f.request,f)}return f}catch(f){let l=f,v=l.response,I=v?.data?.infos?.info||[];if(xe(v||null),Se(I),f.isAxiosError){let L=f.message;if(v?.data&&I.length>0){let j=I.find(({type:k})=>k==="ERROR");j&&(L=j.value)}throw new h(L,l.code,l.config,l.request,l.response)}throw f}};var rt=(n,e,o,t)=>w(n,"get",e,o,t),at=(n,e,o,t)=>w(n,"post",e,o,t),ct=(n,e,o,t)=>w(n,"delete",e,o,t);var wt={setAxiosInstance(n){ot(n)},getAxiosInstance(){return Z()},getLastHttpRequestInfo(){return it()},getInfo(){return st()},get(n,e,o,t){return rt(n,e,o,t)},post(n,e,o,t){return at(n,e,o,t)},delete(n,e,o,t){return ct(n,e,o,t)},request(n,e,o,t,i){return w(n,e,o,t,i)},toQueryString(n){return ee(n)}},m=wt;var y=n=>Object.keys(n).map(e=>`${e}=${String(n[e])}`).join(";"),Ut=n=>{let e={};return n.split(";").forEach(o=>{let[t,i]=o.split("=");e[t]=i}),e};var dt=n=>typeof n<"u"&&typeof n!="function",te=n=>dt(n)?typeof n=="number"?!Number.isNaN(n):!0:!1,T=(n,e)=>{if(n===null)throw new TypeError(`Parameter "${e}" cannot be null.`);if(!te(n))throw new TypeError(`Parameter "${e}" has an invalid value.`)},p=(n,e)=>{if(T(n,e),!n)throw new TypeError(`Parameter "${e}" cannot be empty.`)};var mt=function(n,e){let o=parseInt(e?.pagenumber||"0",10),t=parseInt(e?.itemsnumber||"0",10),i=parseInt(e?.totalpages||"0",10),s=parseInt(e?.totalitems||"0",10),a={getContent(){return n},getPagination(){return{pageNumber:o,itemsNumber:t,totalPages:i,totalItems:s,hasNext:i>o+1}},getPageNumber(){return o},getItemsNumber(){return t},getTotalPages(){return i},getTotalItems(){return s},hasNext(){return i>o+1}};return new Proxy(n,{get(d,f,l){return Object.hasOwn(a,f)?a[f]:Reflect.get(d,f,l)},set(d,f,l,v){return Reflect.set(d,f,l,v)},getPrototypeOf(){return mt.prototype||null}})},E=mt;var U=u.Bundle.ENDPOINT_PATH,jt=u.Bundle.ENDPOINT_OBTAIN_PATH,ne=u.Bundle.TYPE,kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${U}/${e}`,{},o)).data.items?.item.find(s=>s.type===ne);return C(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,U,t,o)).data.items,a=s?.item.filter(d=>d.type===ne).map(d=>C(d));return E(a||[],s)},async create(n,e,o){T(e,"bundle");let i=(await m.post(n,U,e.serialize(),o)).data.items?.item.find(s=>s.type===ne);return C(i)},async update(n,e,o,t){p(e,"number"),T(o,"bundle");let s=(await m.post(n,`${U}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ne);return C(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${U}/${e}`,{forceCascade:!!o},t)},async obtain(n,e,o,t){p(e,"number"),p(o,"licenseeNumber");let i={[u.Licensee.LICENSEE_NUMBER]:o};return(await m.post(n,`${U}/${e}/${jt}`,i,t)).data.items?.item.filter(f=>f.type===u.License.TYPE)?.map(f=>b(f))||[]}},Vt=kt;var Me=class{constructor(){this.validations={}}getValidators(){return this.validations}setValidation(e){return this.validations[e.productModuleNumber]=e,this}getValidation(e,o){return this.validations[e]||o}setProductModuleValidation(e){return this.setValidation(e)}getProductModuleValidation(e,o){return this.getValidation(e,o)}setTtl(e){if(!te(e))throw new TypeError(`Bad ttl:${e.toString()}`);return this.ttl=new Date(e),this}getTtl(){return this.ttl}toString(){let e="ValidationResult [";return Object.keys(this.validations).forEach(o=>{e+=`ProductModule<${o}>`,o in this.validations&&(e+=JSON.stringify(this.validations[o]))}),e+="]",e}},Oe=()=>new Me;var R=u.Licensee.ENDPOINT_PATH,$t=u.Licensee.ENDPOINT_PATH_VALIDATE,Bt=u.Licensee.ENDPOINT_PATH_TRANSFER,oe=u.Licensee.TYPE,qt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${R}/${e}`,{},o)).data.items?.item.find(s=>s.type===oe);return x(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,R,t,o)).data.items,a=s?.item.filter(d=>d.type===oe).map(d=>x(d));return E(a||[],s)},async create(n,e,o,t){T(o,"licensee");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,R,i,t)).data.items?.item.find(d=>d.type===oe);return x(a)},async update(n,e,o,t){p(e,"number"),T(o,"licensee");let s=(await m.post(n,`${R}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===oe);return x(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${R}/${e}`,{forceCascade:!!o},t)},async validate(n,e,o,t){p(e,"number");let i={};if(o){let l=o.productNumber;l&&(i.productNumber=l);let v=o.licenseeProperties;Object.keys(v).forEach(L=>{i[L]=o.getLicenseeProperty(L)}),o.isForOfflineUse()&&(i.forOfflineUse=!0),o.isDryRun()&&(i.dryRun=!0);let I=o.getParameters();Object.keys(I).forEach((L,j)=>{i[`${u.ProductModule.PRODUCT_MODULE_NUMBER}${j}`]=L;let k=I[L];k&&Object.keys(k).forEach($e=>{i[$e+j]=k[$e]})})}let s=await m.post(n,`${R}/${e}/${$t}`,i,t),a=Oe(),d=s.data.ttl;return d&&a.setTtl(d),s.data.items?.item.filter(l=>l.type===u.Validation.TYPE)?.forEach(l=>{a.setValidation(P(l))}),a},transfer(n,e,o,t){p(e,"number"),p(o,"sourceLicenseeNumber");let i={sourceLicenseeNumber:o};return m.post(n,`${R}/${e}/${Bt}`,i,t)}},Yt=qt;var q=u.License.ENDPOINT_PATH,ie=u.License.TYPE,Ft={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${q}/${e}`,{},o)).data.items?.item.find(s=>s.type===ie);return b(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,q,t,o)).data.items,a=s?.item.filter(d=>d.type===ie).map(d=>b(d));return E(a||[],s)},async create(n,e,o,t,i,s){T(i,"license");let a=i.serialize();e&&(a.licenseeNumber=e),o&&(a.licenseTemplateNumber=o),t&&(a.transactionNumber=t);let f=(await m.post(n,q,a,s)).data.items?.item.find(l=>l.type===ie);return b(f)},async update(n,e,o,t,i){p(e,"number"),T(t,"license");let s=t.serialize();o&&(s.transactionNumber=o);let d=(await m.post(n,`${q}/${e}`,s,i)).data.items?.item.find(f=>f.type===ie);return b(d)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${q}/${e}`,{forceCascade:!!o},t)}},Ht=Ft;var Y=u.LicenseTemplate.ENDPOINT_PATH,se=u.LicenseTemplate.TYPE,Kt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${Y}/${e}`,{},o)).data.items?.item.find(s=>s.type===se);return S(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,Y,t,o)).data.items,a=s?.item.filter(d=>d.type===se).map(d=>S(d));return E(a||[],s)},async create(n,e,o,t){T(o,"licenseTemplate");let i=o.serialize();e&&(i.productModuleNumber=e);let a=(await m.post(n,Y,i,t)).data.items?.item.find(d=>d.type===se);return S(a)},async update(n,e,o,t){p(e,"number"),T(o,"licenseTemplate");let s=(await m.post(n,`${Y}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===se);return S(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${Y}/${e}`,{forceCascade:!!o},t)}},zt=Kt;var F=u.Notification.ENDPOINT_PATH,re=u.Notification.TYPE,Gt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${F}/${e}`,{},o)).data.items?.item.find(s=>s.type===re);return A(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,F,t,o)).data.items,a=s?.item.filter(d=>d.type===re).map(d=>A(d));return E(a||[],s)},async create(n,e,o){T(e,"notification");let i=(await m.post(n,F,e.serialize(),o)).data.items?.item.find(s=>s.type===re);return A(i)},async update(n,e,o,t){p(e,"number"),T(o,"notification");let s=(await m.post(n,`${F}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===re);return A(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${F}/${e}`,{forceCascade:!!o},t)}},Jt=Gt;var _e=u.PaymentMethod.ENDPOINT_PATH,we=u.PaymentMethod.TYPE,Wt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${_e}/${e}`,{},o)).data.items?.item.find(s=>s.type===we);return $(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,_e,t,o)).data.items,a=s?.item.filter(d=>d.type===we).map(d=>$(d));return E(a||[],s)},async update(n,e,o,t){p(e,"number"),T(o,"paymentMethod");let s=(await m.post(n,`${_e}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===we);return $(s)}},Qt=Wt;var H=u.ProductModule.ENDPOINT_PATH,ae=u.ProductModule.TYPE,Xt={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${H}/${e}`,{},o)).data.items?.item.find(s=>s.type===ae);return O(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,H,t,o)).data.items,a=s?.item.filter(d=>d.type===ae).map(d=>O(d));return E(a||[],s)},async create(n,e,o,t){T(o,"productModule");let i=o.serialize();e&&(i.productNumber=e);let a=(await m.post(n,H,i,t)).data.items?.item.find(d=>d.type===ae);return O(a)},async update(n,e,o,t){p(e,"number"),T(o,"productModule");let s=(await m.post(n,`${H}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ae);return O(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${H}/${e}`,{forceCascade:!!o},t)}},Zt=Xt;var K=u.Product.ENDPOINT_PATH,ce=u.Product.TYPE,en={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${K}/${e}`,{},o)).data.items?.item.find(s=>s.type===ce);return M(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,K,t,o)).data.items,a=s?.item.filter(d=>d.type===ce).map(d=>M(d));return E(a||[],s)},async create(n,e,o){T(e,"product");let i=(await m.post(n,K,e.serialize(),o)).data.items?.item.find(s=>s.type===ce);return M(i)},async update(n,e,o,t){p(e,"number"),T(o,"product");let s=(await m.post(n,`${K}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ce);return M(s)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${K}/${e}`,{forceCascade:!!o},t)}},tn=en;var de=u.Token.ENDPOINT_PATH,Ue=u.Token.TYPE,nn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${de}/${e}`,{},o)).data.items?.item.find(s=>s.type===Ue);return B(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,de,t,o)).data.items,a=s?.item.filter(d=>d.type===Ue).map(d=>B(d));return E(a||[],s)},async create(n,e,o){T(e,"token");let i=(await m.post(n,de,e.serialize(),o)).data.items?.item.find(s=>s.type===Ue);return B(i)},delete(n,e,o,t){return p(e,"number"),m.delete(n,`${de}/${e}`,{forceCascade:!!o},t)}},on=nn;var me=u.Transaction.ENDPOINT_PATH,ue=u.Transaction.TYPE,sn={async get(n,e,o){p(e,"number");let i=(await m.get(n,`${me}/${e}`,{},o)).data.items?.item.find(s=>s.type===ue);return _(i)},async list(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let s=(await m.get(n,me,t,o)).data.items,a=s?.item.filter(d=>d.type===ue).map(d=>_(d));return E(a||[],s)},async create(n,e,o){T(e,"transaction");let i=(await m.post(n,me,e.serialize(),o)).data.items?.item.find(s=>s.type===ue);return _(i)},async update(n,e,o,t){p(e,"number"),T(o,"transaction");let s=(await m.post(n,`${me}/${e}`,o.serialize(),t)).data.items?.item.find(a=>a.type===ue);return _(s)}},rn=sn;var je=u.Utility.ENDPOINT_PATH,an={async listLicenseTypes(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSE_TYPES}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSE_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return E(a||[],i)},async listLicensingModels(n,e){let o=`${je}/${u.Utility.ENDPOINT_PATH_LICENSING_MODELS}`,i=(await m.get(n,o,void 0,e)).data.items,s=u.Utility.LICENSING_MODEL_TYPE,a=i?.item.filter(d=>d.type===s).map(d=>P(d).name);return E(a||[],i)},async listCountries(n,e,o){let t={};e&&(t[u.FILTER]=typeof e=="string"?e:y(e));let i=`${je}/${u.Utility.ENDPOINT_PATH_COUNTRIES}`,a=(await m.get(n,i,t,o)).data.items,d=u.Utility.COUNTRY_TYPE,f=a?.item.filter(l=>l.type===d).map(l=>Ee(l));return E(f||[],a)}},cn=an;var ke=class{constructor(e){this.baseUrl=e?.baseUrl||"https://go.netlicensing.io/core/v2/rest",this.securityMode=e?.securityMode||N.BASIC_AUTHENTICATION,this.username=e?.username,this.password=e?.password,this.apiKey=e?.apiKey,this.publicKey=e?.publicKey}setBaseUrl(e){return this.baseUrl=e,this}getBaseUrl(){return this.baseUrl}setSecurityMode(e){return this.securityMode=e,this}getSecurityMode(){return this.securityMode}setUsername(e){return this.username=e,this}getUsername(e){return this.username||e}setPassword(e){return this.password=e,this}getPassword(e){return this.password||e}setApiKey(e){return this.apiKey=e,this}getApiKey(e){return this.apiKey||e}setPublicKey(e){return this.publicKey=e,this}getPublicKey(e){return this.publicKey||e}},dn=n=>new ke(n);var Ve=class{constructor(){this.parameters={},this.licenseeProperties={}}setProductNumber(e){return this.productNumber=e,this}getProductNumber(){return this.productNumber}setLicenseeName(e){return this.licenseeProperties.licenseeName=e,this}getLicenseeName(){return this.licenseeProperties.licenseeName}setLicenseeSecret(e){return this.licenseeProperties.licenseeSecret=e,this}getLicenseeSecret(){return this.licenseeProperties.licenseeSecret}getLicenseeProperties(){return this.licenseeProperties}setLicenseeProperty(e,o){return this.licenseeProperties[e]=o,this}getLicenseeProperty(e,o){return this.licenseeProperties[e]||o}setForOfflineUse(e){return this.forOfflineUse=e,this}isForOfflineUse(){return!!this.forOfflineUse}setDryRun(e){return this.dryRun=e,this}isDryRun(){return!!this.dryRun}getParameters(){return this.parameters}setParameter(e,o){return this.parameters[e]=o,this}getParameter(e){return this.parameters[e]}getProductModuleValidationParameters(e){return this.getParameter(e)}setProductModuleValidationParameters(e,o){return this.setParameter(e,o)}},mn=()=>new Ve;export{vt as ApiKeyRole,Pe as Bundle,Vt as BundleService,u as Constants,dn as Context,ge as Country,V as License,Ht as LicenseService,De as LicenseTemplate,zt as LicenseTemplateService,Ce as LicenseTransactionJoin,z as LicenseType,ye as Licensee,pe as LicenseeSecretMode,Yt as LicenseeService,Nt as LicensingModel,h as NlicError,Lt as NodeSecretMode,ve as Notification,G as NotificationEvent,J as NotificationProtocol,Jt as NotificationService,E as Page,he as PaymentMethod,Rt as PaymentMethodEnum,Qt as PaymentMethodService,Ne as Product,Ie as ProductDiscount,Le as ProductModule,Zt as ProductModuleService,tn as ProductService,N as SecurityMode,m as Service,fe as TimeVolumePeriod,be as Token,on as TokenService,W as TokenType,X as Transaction,rn as TransactionService,le as TransactionSource,Q as TransactionStatus,cn as UtilityService,mn as ValidationParameters,Oe as ValidationResults,g as defineEntity,p as ensureNotEmpty,T as ensureNotNull,Ut as filterDecode,y as filterEncode,dt as isDefined,te as isValid,C as itemToBundle,Ee as itemToCountry,b as itemToLicense,S as itemToLicenseTemplate,x as itemToLicensee,A as itemToNotification,P as itemToObject,$ as itemToPaymentMethod,M as itemToProduct,O as itemToProductModule,B as itemToToken,_ as itemToTransaction,D as serialize}; //# sourceMappingURL=index.mjs.map \ No newline at end of file diff --git a/dist/index.mjs.map b/dist/index.mjs.map index 24e40e5..e4e01ac 100644 --- a/dist/index.mjs.map +++ b/dist/index.mjs.map @@ -1 +1 @@ -{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.9.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"AAMA,IAAMA,GAAqB,OAAO,OAAO,CAEvC,SAAU,WACV,WAAY,aACZ,OAAQ,QACV,CAAC,EAEMC,GAAQD,GCPf,IAAME,GAAc,OAAO,OAAO,CAChC,QAAS,UACT,WAAY,aACZ,SAAU,WACV,SAAU,UACZ,CAAC,EAEMC,EAAQD,GCPf,IAAME,GAAoB,OAAO,OAAO,CACtC,iBAAkB,mBAClB,gBAAiB,kBACjB,sBAAuB,wBACvB,8BAA+B,+BACjC,CAAC,EAEMC,EAAQD,GCPf,IAAME,GAAuB,OAAO,OAAO,CACzC,QAAS,SACX,CAAC,EAEMC,EAAQD,GCJf,IAAME,GAAe,OAAO,OAAO,CACjC,qBAAsB,aACtB,sBAAuB,SACvB,yBAA0B,WAC5B,CAAC,EAEMC,EAAQD,GCNf,IAAME,GAAmB,OAAO,OAAO,CACrC,IAAK,MACL,KAAM,OACN,MAAO,QACP,KAAM,MACR,CAAC,EAEMC,GAAQD,GCPf,IAAME,GAAY,OAAO,OAAO,CAC9B,QAAS,UACT,KAAM,OACN,OAAQ,SACR,OAAQ,QACV,CAAC,EAEMC,EAAQD,GCPf,IAAME,GAAoB,OAAO,OAAO,CACtC,KAAM,OAEN,oBAAqB,sBACrB,oBAAqB,sBACrB,oBAAqB,sBAErB,qBAAsB,uBACtB,qBAAsB,uBACtB,uBAAwB,yBAExB,4BAA6B,8BAE7B,0BAA2B,4BAE3B,oBAAqB,sBAErB,uBAAwB,yBAExB,oBAAqB,sBAErB,kBAAmB,oBAEnB,yBAA0B,2BAE1B,cAAe,eACjB,CAAC,EAEMC,GAAQD,GC5Bf,IAAME,GAAoB,OAAO,OAAO,CACtC,QAAS,UACT,OAAQ,SACR,UAAW,WACb,CAAC,EAEMC,EAAQD,GCIf,IAAOE,EAAQ,CACb,mBAAAC,GACA,YAAAC,EACA,kBAAAC,EACA,qBAAAC,EACA,aAAAC,EACA,iBAAAC,GACA,UAAAC,EACA,kBAAAC,GACA,kBAAAC,EAGA,qBAAsB,aAGtB,sBAAuB,SAGvB,yBAA0B,YAE1B,OAAQ,SAER,QAAS,CACP,KAAM,UACN,cAAe,SACjB,EAEA,cAAe,CACb,KAAM,gBACN,cAAe,gBACf,sBAAuB,qBACzB,EAEA,SAAU,CACR,KAAM,WACN,cAAe,WACf,uBAAwB,WACxB,uBAAwB,WACxB,gBAAiB,gBACnB,EAEA,gBAAiB,CACf,KAAM,kBACN,cAAe,kBAGf,YAAAP,CACF,EAEA,QAAS,CACP,KAAM,UACN,cAAe,SACjB,EAEA,WAAY,CACV,KAAM,yBACR,EAEA,MAAO,CACL,KAAM,QACN,cAAe,QAGf,KAAMK,CACR,EAEA,cAAe,CACb,KAAM,gBACN,cAAe,eACjB,EAEA,OAAQ,CACN,KAAM,SACN,cAAe,SACf,qBAAsB,QACxB,EAEA,aAAc,CACZ,KAAM,eACN,cAAe,eAGf,SAAUH,EAGV,MAAOD,CACT,EAEA,YAAa,CACX,KAAM,cACN,cAAe,cAGf,OAAQM,CACV,EAEA,QAAS,CACP,cAAe,UACf,4BAA6B,eAC7B,+BAAgC,kBAChC,wBAAyB,YACzB,qBAAsB,2BACtB,aAAc,cACd,aAAc,SAChB,CACF,ECnHA,IAAMC,GAAa,OAAO,OAAO,CAC/B,qBAAsB,uBACtB,sBAAuB,wBACvB,sBAAuB,wBACvB,wBAAyB,0BACzB,kBAAmB,mBACrB,CAAC,EAEMC,GAAQD,GCRf,IAAME,GAAiB,OAAO,OAAO,CACnC,YAAa,YACb,aAAc,eACd,OAAQ,SACR,SAAU,WACV,cAAe,eACf,YAAa,YACb,cAAe,eACf,MAAO,QACP,YAAa,aACb,SAAU,UACZ,CAAC,EAEMC,GAAQD,GCbf,IAAME,GAAiB,OAAO,OAAO,CACnC,WAAY,aACZ,OAAQ,QACV,CAAC,EAEMC,GAAQD,GCLf,IAAME,GAAoB,OAAO,OAAO,CACtC,KAAM,OACN,OAAQ,SACR,eAAgB,iBAChB,OAAQ,SACR,eAAgB,gBAClB,CAAC,EAEMC,GAAQD,GCZf,IAAME,GAAQC,GAA2B,CACvC,GAAI,CACF,OAAO,KAAK,MAAMA,CAAK,CACzB,MAAY,CACV,OAAOA,CACT,CACF,EAEMC,GAAqBC,GAAmD,CAC5E,IAAMC,EAAkC,CAAC,EACzC,OAAAD,GAAY,QAAQ,CAAC,CAAE,KAAAE,EAAM,MAAAJ,CAAM,IAAM,CACvCG,EAAOC,CAAI,EAAIL,GAAKC,CAAK,CAC3B,CAAC,EACMG,CACT,EAEME,GAAgBC,GAAmB,CACvC,IAAMH,EAAoC,CAAC,EAE3C,OAAAG,GAAO,QAASC,GAAS,CACvB,GAAM,CAAE,KAAAH,CAAK,EAAIG,EACjBJ,EAAOC,CAAI,EAAID,EAAOC,CAAI,GAAK,CAAC,EAChCD,EAAOC,CAAI,EAAE,KAAKI,GAAaD,CAAI,CAAC,CACtC,CAAC,EACMJ,CACT,EAEMK,GAA4DC,GACzDA,EAAQ,CAAE,GAAGR,GAAkBQ,EAAK,QAAQ,EAAG,GAAGJ,GAAaI,EAAK,IAAI,CAAE,EAAW,CAAC,EAGxFC,EAAQF,GCjCR,IAAMG,GAAM,CAAsCC,EAAQC,IACxD,OAAO,OAAOD,EAAKC,CAAG,EAGlBC,EAAM,CAAsCF,EAAQC,EAAQE,IAAsB,CAC7FH,EAAIC,CAAG,EAAIE,CACb,EAEaC,EAAM,CAAqDJ,EAAQC,EAAQI,IAC/EN,GAAIC,EAAKC,CAAG,EAAID,EAAIC,CAAG,EAAKI,ECSrC,IAAOC,EAAQ,CAAmBC,EAAQC,EAAiC,CAAC,IAA8B,CACxG,IAAMC,EAA8B,CAAC,EAE/B,CAAE,OAAAC,EAAS,CAAC,CAAE,EAAIF,EAExB,cAAO,QAAQD,CAAG,EAAE,QAAQ,CAAC,CAACI,EAAGC,CAAC,IAAM,CAEtC,GAAI,CAAAF,EAAO,SAASC,CAAC,GAIjB,OAAOC,GAAM,WAGV,GAAIA,IAAM,OACfH,EAAIE,CAAC,EAAI,WACA,OAAOC,GAAM,SACtBH,EAAIE,CAAC,EAAIC,UACAA,aAAa,KAEtBH,EAAIE,CAAC,EAAIC,EAAE,YAAY,UACd,OAAOA,GAAM,UAAYA,IAAM,KAExCH,EAAIE,CAAC,EAAI,OAAOC,CAAC,MAGjB,IAAI,CACFH,EAAIE,CAAC,EAAI,KAAK,UAAUC,CAAC,CAC3B,MAAQ,CACNH,EAAIE,CAAC,EAAI,OAAOC,CAAC,CACnB,CAEJ,CAAC,EAEMH,CACT,EClCA,IAAMI,GAAe,SACnBC,EACAC,EACAC,EAAW,CAAC,EACZC,EACA,CACA,IAAMC,EAAgF,CACpF,IAAK,CAAC,EACN,IAAK,CAAC,CACR,EAEID,GAAS,KACXC,EAAU,IAAI,KAAKD,EAAQ,GAAG,EAG5BA,GAAS,KACXC,EAAU,IAAI,KAAKD,EAAQ,GAAG,EAGhC,IAAME,EAAyB,CAC7B,IAAgBC,EAAKC,EAAa,CAChCC,EAAIR,EAAOM,EAAKC,CAAK,CACvB,EAEA,IAAgBD,EAAKG,EAAK,CACxB,OAAOC,EAAIV,EAAOM,EAAKG,CAAG,CAC5B,EAEA,IAAgBH,EAAK,CACnB,OAAOK,GAAIX,EAAOM,CAAG,CACvB,EAGA,YAAYA,EAAKC,EAAO,CACtB,KAAK,IAAID,EAAKC,CAAK,CACrB,EAEA,YAAYD,EAAKC,EAAO,CACtB,KAAK,IAAID,EAAKC,CAAK,CACrB,EAEA,YAAYD,EAAKG,EAAK,CACpB,OAAO,KAAK,IAAIH,EAAKG,CAAG,CAC1B,EAEA,YAAYH,EAAK,CACf,OAAO,KAAK,IAAIA,CAAG,CACrB,EAEA,cAAcM,EAAY,CACxB,OAAO,QAAQA,CAAU,EAAE,QAAQ,CAAC,CAACC,EAAGC,CAAC,IAAM,CAC7C,KAAK,IAAID,EAAcC,CAAe,CACxC,CAAC,CACH,EAEA,WAAsB,CACpB,OAAOC,EAAUf,CAAK,CACxB,CACF,EAEA,OAAO,IAAI,MAAMA,EAAO,CACtB,IAAIgB,EAAQC,EAAuBC,EAAU,CAC3C,OAAI,OAAO,OAAOjB,EAASgB,CAAI,EACtBhB,EAAQgB,CAA4B,EAGzC,OAAO,OAAOZ,EAAMY,CAAI,EACnBZ,EAAKY,CAAyB,GAGvCb,EAAU,IAAI,QAAS,GAAM,CAC3B,EAAEY,EAAKC,EAAMC,CAAQ,CACvB,CAAC,EAEM,QAAQ,IAAIF,EAAKC,EAAMC,CAAQ,EACxC,EAEA,IAAIF,EAAKC,EAAMV,EAAOW,EAAU,CAC9B,OAAAd,EAAU,IAAI,QAASe,GAAM,CAC3BA,EAAEH,EAAKC,EAAMV,EAAOW,CAAQ,CAC9B,CAAC,EAEM,QAAQ,IAAIF,EAAKC,EAAMV,EAAOW,CAAQ,CAC/C,EAEA,gBAAiB,CACf,OAAOhB,EAAM,WAAa,IAC5B,CACF,CAAC,CACH,EAEOkB,EAAQrB,GCjEf,IAAMsB,GAAS,SAA4BC,EAA6B,CAAC,EAAsC,CAC7G,IAAMC,EAAqB,CAAE,GAAGD,CAAW,EAyF3C,OAAOE,EAAaD,EAvFW,CAC7B,UAAsBE,EAAiB,CACrCC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAgB,CACpCH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,SAAqBI,EAAqB,CACxCL,EAAIH,EAAO,QAASQ,CAAK,CAC3B,EAEA,SAAoCJ,EAAqB,CACvD,OAAOC,EAAIL,EAAO,QAASI,CAAG,CAChC,EAEA,YAAwBK,EAAwB,CAC9CN,EAAIH,EAAO,WAAYS,CAAQ,CACjC,EAEA,YAAuCL,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,iBAAiBE,EAAgB,CAC/BH,EAAIH,EAAO,gBAAiBM,CAAM,CACpC,EAEA,iBAAgCF,EAAqB,CACnD,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,0BAAsCM,EAAyB,CAC7DP,EAAIH,EAAO,yBAA0BU,CAAO,CAC9C,EAEA,yBAAqCJ,EAAsB,CACpDN,EAAM,yBACTA,EAAM,uBAAyB,CAAC,GAGlCA,EAAM,uBAAuB,KAAKM,CAAM,CAC1C,EAEA,0BAAqDF,EAAuB,CAC1E,OAAOC,EAAIL,EAAO,yBAA0BI,CAAG,CACjD,EAEA,4BAAwCE,EAAsB,CAC5D,GAAM,CAAE,uBAAwBI,EAAU,CAAC,CAAE,EAAIV,EAEjDU,EAAQ,OAAOA,EAAQ,QAAQJ,CAAM,EAAG,CAAC,EACzCN,EAAM,uBAAyBU,CACjC,EAEA,+BAA0DN,EAAuB,CAC/E,OAAOC,EAAIL,EAAO,8BAA+BI,CAAG,CACtD,EAEA,WAA8C,CAC5C,IAAMO,EAA+B,CAAC,EAEtC,OAAIX,EAAM,yBACRW,EAAK,uBAA4BX,EAAM,uBAAuB,KAAK,GAAG,GAGjEY,EAAU,CAAE,GAAGZ,EAAO,GAAGW,CAAK,EAAG,CAAE,OAAQ,CAAC,6BAA6B,CAAE,CAAC,CACrF,CACF,EAEsDb,EAAM,CAC9D,EAEOe,GAAQf,GC7Hf,IAAOgB,EAAyCC,GAAgB,CAC9D,IAAMC,EAAQC,EAAsCF,CAAI,EAElD,CAAE,uBAAAG,CAAuB,EAAIF,EAEnC,OAAIE,GAA0B,OAAOA,GAA2B,WAC9DF,EAAM,uBAAyBE,EAAuB,MAAM,GAAG,GAG1DC,GAAUH,CAAuB,CAC1C,ECDA,IAAMI,GAAU,SAAUC,EAA2B,CAAC,EAAkC,CAQtF,IAAMC,EAAsB,CAAE,GAPC,CAC7B,KAAM,GACN,KAAM,GACN,WAAY,EACZ,KAAM,EACR,EAE2C,GAAGD,CAAW,EAoBzD,OAAOE,EAAaD,EAlBY,CAC9B,SAA4B,CAC1B,OAAOA,EAAM,IACf,EAEA,SAA4B,CAC1B,OAAOA,EAAM,IACf,EAEA,eAAkC,CAChC,OAAOA,EAAM,UACf,EAEA,SAA6B,CAC3B,OAAOA,EAAM,IACf,CACF,EAEoCF,EAAO,CAC7C,EAEOI,GAAQJ,GCtCf,IAAOK,GAASC,GAAgBC,GAAQC,EAA2BF,CAAI,CAAC,ECgExE,IAAMG,GAAU,SAA4BC,EAA8B,CAAC,EAAwC,CACjH,IAAMC,EAAsB,CAAE,GAAID,CAAiB,EAgFnD,OAAOE,EAAaD,EA9EY,CAC9B,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,SAAqBI,EAAqB,CACxCL,EAAIH,EAAO,QAASQ,CAAK,CAC3B,EAEA,SAAoCJ,EAAqB,CACvD,OAAOC,EAAIL,EAAO,QAASI,CAAG,CAChC,EAEA,YAAwBK,EAAwB,CAC9CN,EAAIH,EAAO,WAAYS,CAAQ,CACjC,EAEA,YAAuCL,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,UAAsBM,EAAuB,CAC3CP,EAAIH,EAAO,SAAUU,CAAM,CAC7B,EAEA,UAAqCN,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,kBAA8BE,EAAsB,CAClDH,EAAIH,EAAO,iBAAkBM,CAAM,CACrC,EAEA,kBAA6CF,EAAqB,CAChE,OAAOC,EAAIL,EAAO,iBAAkBI,CAAG,CACzC,EAEA,yBAAqCE,EAAsB,CACzDH,EAAIH,EAAO,wBAAyBM,CAAM,CAC5C,EAEA,yBAAoDF,EAAqB,CACvE,OAAOC,EAAIL,EAAO,wBAAyBI,CAAG,CAChD,EAEA,uBAAmCE,EAAsB,CACvDH,EAAIH,EAAO,sBAAuBM,CAAM,CAC1C,EAEA,uBAAkDF,EAAqB,CACrE,OAAOC,EAAIL,EAAO,sBAAuBI,CAAG,CAC9C,EAEA,WAA8C,CAC5C,OAAOO,EAAUX,EAAO,CAAE,OAAQ,CAAC,OAAO,CAAE,CAAC,CAC/C,CACF,EAEuDF,EAAO,CAChE,EAEOc,EAAQd,GCtJf,IAAOe,EAA0CC,GAAgB,CAC/D,IAAMC,EAAQC,EAAsCF,CAAI,EAElD,CAAE,UAAAG,CAAU,EAAIF,EAEtB,OAAIE,GAAa,OAAOA,GAAc,WACpCF,EAAM,UAAYE,IAAc,MAAQA,EAAY,IAAI,KAAKA,CAAS,GAGjEC,EAAWH,CAAwB,CAC5C,ECqBA,IAAMI,GAAW,SAA4BC,EAA+B,CAAC,EAA0C,CACrH,IAAMC,EAAuB,CAAE,GAAGD,CAAW,EA+C7C,OAAOE,EAAaD,EA7Ca,CAC/B,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EACA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,iBAA6BE,EAAsB,CACjDH,EAAIH,EAAO,gBAAiBM,CAAM,CACpC,EAEA,iBAA4CF,EAAqB,CAC/D,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,qBAAiCI,EAAqB,CACpDL,EAAIH,EAAO,oBAAqBQ,CAAI,CACtC,EAEA,qBAAgDJ,EAAsB,CACpE,OAAOC,EAAIL,EAAO,oBAAqBI,CAAG,CAC5C,EAEA,WAA8C,CAC5C,OAAOK,EAAUT,EAAO,CAAE,OAAQ,CAAC,OAAO,CAAE,CAAC,CAC/C,CACF,EAEwDF,EAAQ,CAClE,EAEOY,GAAQZ,GClFf,IAAOa,EAA2CC,GAAgBC,GAAYC,EAAgBF,CAAI,CAAC,EC+DnG,IAAMG,GAAkB,SACtBC,EAAsC,CAAC,EACb,CAC1B,IAAMC,EAA8B,CAAE,GAAGD,CAAW,EAwFpD,OAAOE,EAAaD,EAtFoB,CACtC,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,eAA2BI,EAA+B,CACxDL,EAAIH,EAAO,cAAeQ,CAAI,CAChC,EAEA,eAA0CJ,EAAgC,CACxE,OAAOC,EAAIL,EAAO,cAAeI,CAAG,CACtC,EAEA,SAAqBK,EAAqB,CACxCN,EAAIH,EAAO,QAASS,CAAK,CAC3B,EAEA,SAAoCL,EAAqB,CACvD,OAAOC,EAAIL,EAAO,QAASI,CAAG,CAChC,EAEA,YAAwBM,EAAwB,CAC9CP,EAAIH,EAAO,WAAYU,CAAQ,CACjC,EAEA,YAAuCN,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,aAAyBO,EAA0B,CACjDR,EAAIH,EAAO,YAAaW,CAAS,CACnC,EAEA,aAAwCP,EAAsB,CAC5D,OAAOC,EAAIL,EAAO,YAAaI,CAAG,CACpC,EAEA,UAAsBQ,EAAuB,CAC3CT,EAAIH,EAAO,SAAUY,CAAM,CAC7B,EAEA,UAAqCR,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,gBAA4BS,EAA6B,CACvDV,EAAIH,EAAO,eAAgBa,CAAY,CACzC,EAEA,gBAA2CT,EAAsB,CAC/D,OAAOC,EAAIL,EAAO,eAAgBI,CAAG,CACvC,EAEA,uBAAmCU,EAAmC,CACpEX,EAAIH,EAAO,sBAAuBc,CAAmB,CACvD,EAEA,uBAAkDV,EAAqB,CACrE,OAAOC,EAAIL,EAAO,sBAAuBI,CAAG,CAC9C,EAEA,WAA8C,CAC5C,OAAOW,EAAUf,EAAO,CAAE,OAAQ,CAAC,OAAO,CAAE,CAAC,CAC/C,CACF,EAE+DF,EAAe,CAChF,EAEOkB,GAAQlB,GC7Jf,IAAOmB,EAAkDC,GAAgBC,GAAmBC,EAAgBF,CAAI,CAAC,ECqCjH,IAAMG,GAAe,SACnBC,EAAmC,CAAC,EACb,CACvB,IAAMC,EAA2B,CAAE,GAAGD,CAAW,EA6EjD,OAAOE,EAAaD,EA3EiB,CACnC,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,YAAwBI,EAA4C,CAClEL,EAAIH,EAAO,WAAYQ,CAAQ,CACjC,EAEA,YAAuCJ,EAAyC,CAC9E,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,UAAsBK,EAAyC,CAC7DN,EAAIH,EAAO,SAAUS,CAAM,CAC7B,EAEA,UAAqCL,EAAwC,CAC3E,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,SAASM,EAAsC,CAC7C,IAAMD,EAAS,KAAK,UAAU,CAAC,CAAC,EAChCA,EAAO,KAAKC,CAAK,EAEjB,KAAK,UAAUD,CAAM,CACvB,EAEA,WAAuBE,EAAuB,CAC5CR,EAAIH,EAAO,UAAWW,CAAO,CAC/B,EAEA,WAAsCP,EAAqB,CACzD,OAAOC,EAAIL,EAAO,UAAWI,CAAG,CAClC,EAEA,YAAwBQ,EAAwB,CAC9CT,EAAIH,EAAO,WAAYY,CAAQ,CACjC,EAEA,YAAuCR,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,WAAoC,CAClC,IAAMS,EAAOC,EAAUd,CAAK,EAE5B,OAAIa,EAAK,SACPA,EAAK,OAAS,KAAK,UAAU,CAAC,CAAC,EAAE,KAAK,GAAG,GAGpCA,CACT,CACF,EAE4Df,EAAY,CAC1E,EAEOiB,GAAQjB,GCxHf,IAAOkB,EAA+CC,GAAgB,CACpE,IAAMC,EAAQC,EAAsCF,CAAI,EAElD,CAAE,OAAAG,CAAO,EAAIF,EAEnB,OAAIE,GAAU,OAAOA,GAAW,WAC9BF,EAAM,OAASE,EAAO,MAAM,GAAG,GAG1BC,GAAgBH,CAA6B,CACtD,ECDA,IAAMI,GAAgB,SACpBC,EAAoC,CAAC,EACb,CACxB,IAAMC,EAA4B,CAAE,GAAGD,CAAW,EAoBlD,OAAOE,EAAaD,EAlBkB,CACpC,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,CACF,EAE6DN,EAAa,CAC5E,EAEOS,GAAQT,GCnCf,IAAOU,EAAgDC,GAAgBC,GAAiBC,EAAgBF,CAAI,CAAC,ECwC7G,IAAMG,GAAU,SACdC,EAA8B,CAAC,EACb,CAClB,IAAMC,EAAsB,CAAE,GAAGD,CAAW,EAuG5C,OAAOE,EAAaD,EArGY,CAC9B,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,WAAuBI,EAAuB,CAC5CL,EAAIH,EAAO,UAAWQ,CAAO,CAC/B,EAEA,WAAsCJ,EAA8B,CAClE,OAAOC,EAAIL,EAAO,UAAWI,CAAG,CAClC,EAEA,eAA2BK,EAA2B,CACpDN,EAAIH,EAAO,cAAeS,CAAW,CACvC,EAEA,eAA0CL,EAAqB,CAC7D,OAAOC,EAAIL,EAAO,cAAeI,CAAG,CACtC,EAEA,iBAA6BM,EAA6B,CACxDP,EAAIH,EAAO,gBAAiBU,CAAa,CAC3C,EAEA,iBAA4CN,EAAqB,CAC/D,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,sBAAkCO,EAAmC,CACnER,EAAIH,EAAO,qBAAsBW,CAAkB,CACrD,EAEA,sBAAiDP,EAAsB,CACrE,OAAOC,EAAIL,EAAO,qBAAsBI,CAAG,CAC7C,EAEA,aAAyBQ,EAA0C,CACjET,EAAIH,EAAO,YAAaY,CAAS,CACnC,EAEA,aAAwCR,EAAsC,CAC5E,OAAOC,EAAIL,EAAO,YAAaI,CAAG,CACpC,EAEA,YAAYS,EAAuC,CACjD,IAAMD,EAAY,KAAK,aAAa,CAAC,CAA4B,EACjEA,EAAU,KAAKC,CAAQ,EAEvB,KAAK,aAAaD,CAAS,CAC7B,EAEA,eAAeC,EAAuC,CACpD,IAAMD,EAAY,KAAK,aAAa,EAEhC,MAAM,QAAQA,CAAS,GAAKA,EAAU,OAAS,IACjDA,EAAU,OAAOA,EAAU,QAAQC,CAAQ,EAAG,CAAC,EAC/C,KAAK,aAAaD,CAAS,EAE/B,EAEA,oBAAoBE,EAAiD,CACnE,KAAK,aAAaA,CAAgB,CACpC,EAEA,oBAAmCV,EAAsC,CACvE,OAAO,KAAK,aAAaA,CAAG,CAC9B,EAEA,WAA+C,CAC7C,IAAMW,EAAyCC,EAAUhB,EAAO,CAAE,OAAQ,CAAC,YAAa,OAAO,CAAE,CAAC,EAC5FY,EAAY,KAAK,aAAa,EAEpC,OAAIA,IACFG,EAAI,SAAWH,EAAU,OAAS,EAAIA,EAAU,IAAKC,GAAaA,EAAS,SAAS,CAAC,EAAI,IAGpFE,CACT,CACF,EAEuDjB,EAAO,CAChE,EAEOmB,GAAQnB,GClKf,OAAS,cAAAoB,OAA6D,QAEtE,IAAqBC,EAArB,MAAqBC,UAA4CF,EAAiB,CAGhF,YACEG,EACAC,EACAC,EACAC,EACAC,EACAC,EACA,CACA,MAAML,EAASC,EAAMC,EAAQC,EAASC,CAAQ,EAVhD,iBAAc,GAWZ,KAAK,KAAO,YAERC,IACF,KAAK,MAAQA,GAGf,OAAO,eAAe,KAAMN,EAAU,SAAS,CACjD,CACF,ECJA,IAAMO,GAAkB,SACtBC,EAAmC,CAAC,EACb,CACvB,IAAMC,EAA8B,CAAE,GAAGD,CAAW,EAEpD,GAAIC,EAAM,WAAaA,EAAM,cAC3B,MAAM,IAAIC,EAAU,4EAA4E,EA6ClG,OAAOC,EAAaF,EA1CoB,CACtC,cAA0BG,EAA0B,CAClDC,EAAIJ,EAAO,aAAcG,CAAU,CACrC,EAEA,cAA6BE,EAAqB,CAChD,OAAOC,EAAIN,EAAO,aAAcK,CAAG,CACrC,EAEA,YAAYE,EAAwB,CAClCH,EAAIJ,EAAO,WAAYO,CAAQ,CACjC,EAEA,YAAuCF,EAAqB,CAC1D,OAAOC,EAAIN,EAAO,WAAYK,CAAG,CACnC,EAEA,aAAyBG,EAAyB,CAChDJ,EAAIJ,EAAO,YAAaQ,CAAS,CACnC,EAEA,aAAwCH,EAAqB,CAC3D,OAAOC,EAAIN,EAAO,YAAaK,CAAG,CACpC,EAEA,iBAA6BI,EAA6B,CACxDL,EAAIJ,EAAO,gBAAiBS,CAAa,CAC3C,EAEA,iBAA4CJ,EAAqB,CAC/D,OAAOC,EAAIN,EAAO,gBAAiBK,CAAG,CACxC,EAEA,UAAW,CACT,IAAMK,EAAQ,KAAK,cAAc,EAC3BH,EAAW,KAAK,YAAY,EAC5BI,EAAS,KAAK,iBAAiB,EAAI,GAAG,KAAK,iBAAiB,CAAC,IAAM,KAAK,aAAa,EAE3F,OAAOD,GAASH,GAAYI,EAAS,GAAGD,CAAK,IAAIH,CAAQ,IAAII,CAAM,GAAK,EAC1E,CACF,EAEoCb,GAAiB,CACnD,IAAK,CAACc,EAAKC,IAAS,CACdA,IAAS,aACX,OAAOD,EAAI,cAGTC,IAAS,iBACX,OAAOD,EAAI,SAEf,CACF,CAAC,CACH,EAEOE,GAAQhB,GCnEf,IAAOiB,EAA0CC,GAAgB,CAC/D,IAAMC,EAAQC,EAAsCF,CAAI,EAElDG,EAAiDF,EAAM,SAC7D,cAAOA,EAAM,SAETE,IACFF,EAAM,UAAYE,EAAU,IAAKC,GAAMC,GAAgBD,CAAC,CAAC,GAGpDE,GAAWL,CAAwB,CAC5C,EC0BA,IAAMM,GAAgB,SACpBC,EAAoC,CAAC,EACb,CACxB,IAAMC,EAA4B,CAAE,GAAGD,CAAW,EAgDlD,OAAOE,EAAaD,EA9CkB,CACpC,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,QAAoBG,EAAoB,CACtCJ,EAAIH,EAAO,OAAQO,CAAI,CACzB,EAEA,QAAmCH,EAAqB,CACtD,OAAOC,EAAIL,EAAO,OAAQI,CAAG,CAC/B,EAEA,kBAAkBI,EAA4C,CAC5DL,EAAIH,EAAO,iBAAkBQ,CAAc,CAC7C,EAEA,kBAA6CJ,EAAmC,CAC9E,OAAOC,EAAIL,EAAO,iBAAkBI,CAAG,CACzC,EAEA,iBAA6BK,EAA6B,CACxDN,EAAIH,EAAO,gBAAiBS,CAAa,CAC3C,EAEA,iBAA4CL,EAAqB,CAC/D,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,WAA8C,CAC5C,OAAOM,EAAUV,EAAO,CAAE,OAAQ,CAAC,OAAO,CAAE,CAAC,CAC/C,CACF,EAE6DF,EAAa,CAC5E,EAEOa,GAAQb,GC7Ff,IAAOc,EAAgDC,GAAgBC,GAAiBC,EAAgBF,CAAI,CAAC,ECU7G,IAAMG,GAAQ,SAAqCC,EAA4B,CAAC,EAAoC,CAClH,IAAMC,EAAoB,CAAE,GAAGD,CAAW,EAoI1C,OAAOE,EAAaD,EAlIU,CAC5B,UAAsBE,EAAuB,CAC3CC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,kBAA8BG,EAA4B,CACxDJ,EAAIH,EAAO,iBAAkBO,CAAc,CAC7C,EAEA,kBAA6CH,EAAmB,CAC9D,OAAOC,EAAIL,EAAO,iBAAkBI,CAAG,CACzC,EAEA,aAAyBI,EAAkC,CACzDL,EAAIH,EAAO,YAAaQ,CAAS,CACnC,EAEA,aAAwCJ,EAA8B,CACpE,OAAOC,EAAIL,EAAO,YAAaI,CAAG,CACpC,EAEA,kBAA8BK,EAA8B,CAC1DN,EAAIH,EAAO,iBAAkBS,CAAc,CAC7C,EAEA,kBAA6CL,EAAqB,CAChE,OAAOC,EAAIL,EAAO,iBAAkBI,CAAG,CACzC,EAEA,UAAsBM,EAAsB,CAC1CP,EAAIH,EAAO,SAAUU,CAAM,CAC7B,EAEA,UAAqCN,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,cAA0BO,EAAoC,CAC5DR,EAAIH,EAAO,aAAcW,CAAU,CACrC,EAEA,cAAyCP,EAA+B,CACtE,OAAOC,EAAIL,EAAO,aAAcI,CAAG,CACrC,EAEA,gBAA4BQ,EAA4B,CACtDT,EAAIH,EAAO,eAAgBY,CAAY,CACzC,EAEA,gBAA2CR,EAAqB,CAC9D,OAAOC,EAAIL,EAAO,eAAgBI,CAAG,CACvC,EAEA,eAA2BS,EAA2B,CACpDV,EAAIH,EAAO,cAAea,CAAW,CACvC,EAEA,eAA0CT,EAAqB,CAC7D,OAAOC,EAAIL,EAAO,cAAeI,CAAG,CACtC,EAEA,iBAA6BU,EAA6B,CACxDX,EAAIH,EAAO,gBAAiBc,CAAa,CAC3C,EAEA,iBAA4CV,EAAqB,CAC/D,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,0BAAsCW,EAAsC,CAC1EZ,EAAIH,EAAO,yBAA0Be,CAAsB,CAC7D,EAEA,0BAAqDX,EAAqB,CACxE,OAAOC,EAAIL,EAAO,yBAA0BI,CAAG,CACjD,EAEA,cAA0BY,EAA0B,CAClDb,EAAIH,EAAO,aAAcgB,CAAU,CACrC,EAEA,cAAyCZ,EAAqB,CAC5D,OAAOC,EAAIL,EAAO,aAAcI,CAAG,CACrC,EAEA,mBAA+Ba,EAA+B,CAC5Dd,EAAIH,EAAO,kBAAmBiB,CAAe,CAC/C,EAEA,mBAA8Cb,EAAqB,CACjE,OAAOC,EAAIL,EAAO,kBAAmBI,CAAG,CAC1C,EAEA,aAAyBc,EAAyB,CAChDf,EAAIH,EAAO,YAAakB,CAAS,CACnC,EAEA,aAAwCd,EAAqB,CAC3D,OAAOC,EAAIL,EAAO,YAAaI,CAAG,CACpC,EAEA,kBAA8Be,EAA8B,CAC1DhB,EAAIH,EAAO,iBAAkBmB,CAAc,CAC7C,EAEA,kBAA6Cf,EAAqB,CAChE,OAAOC,EAAIL,EAAO,iBAAkBI,CAAG,CACzC,EAEA,WAAsCA,EAAqB,CACzD,OAAOC,EAAIL,EAAO,UAAWI,CAAG,CAClC,EAEA,WAA8C,CAC5C,OAAOgB,EAAUpB,EAAO,CAAE,OAAQ,CAAC,SAAS,CAAE,CAAC,CACjD,CACF,EAEqDF,EAAK,CAC5D,EAEOuB,GAAQvB,GClJf,IAAOwB,EAAwCC,GAAgB,CAC7D,IAAMC,EAAQC,EAAsCF,CAAI,EAElD,CAAE,eAAAG,CAAe,EAAIF,EAE3B,OAAIE,GAAkB,OAAOA,GAAmB,WAC9CF,EAAM,eAAiB,IAAI,KAAKE,CAAc,GAGzCC,GAASH,CAAsB,CACxC,ECXA,IAAMI,GAAN,KAAgE,CAI9D,YAAYC,EAAgCC,EAAwB,CAClE,KAAK,YAAcD,EACnB,KAAK,QAAUC,CACjB,CAEA,eAAeD,EAAsC,CACnD,KAAK,YAAcA,CACrB,CAEA,gBAAoC,CAClC,OAAO,KAAK,WACd,CAEA,WAAWC,EAA8B,CACvC,KAAK,QAAUA,CACjB,CAEA,YAA4B,CAC1B,OAAO,KAAK,OACd,CACF,EAEOC,GAAQ,CAACF,EAAgCC,IAC9C,IAAIF,GAAuBC,EAAaC,CAAO,ECejD,IAAME,GAAc,SAClBC,EAAkC,CAAC,EACb,CACtB,IAAMC,EAA0B,CAAE,GAAGD,CAAW,EAqGhD,OAAOE,EAAaD,EAnGgB,CAClC,UAAsBE,EAAiB,CACrCC,EAAIH,EAAO,SAAUE,CAAM,CAC7B,EAEA,UAAqCE,EAAsB,CACzD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBE,EAAsB,CAC1CH,EAAIH,EAAO,SAAUM,CAAM,CAC7B,EAEA,UAAqCF,EAAqB,CACxD,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBG,EAAuC,CAC3DJ,EAAIH,EAAO,SAAUO,CAAM,CAC7B,EAEA,UAAqCH,EAAsC,CACzE,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EAEA,UAAsBI,EAAuC,CAC3DL,EAAIH,EAAO,SAAUQ,CAAM,CAC7B,EACA,UAAqCJ,EAAsC,CACzE,OAAOC,EAAIL,EAAO,SAAUI,CAAG,CACjC,EACA,cAA0BK,EAA0B,CAClDN,EAAIH,EAAO,aAAcS,CAAU,CACrC,EACA,cAAyCL,EAAqB,CAC5D,OAAOC,EAAIL,EAAO,aAAcI,CAAG,CACrC,EAEA,YAAwBM,EAAwB,CAC9CP,EAAIH,EAAO,WAAYU,CAAQ,CACjC,EAEA,YAAuCN,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,YAAwBO,EAAwB,CAC9CR,EAAIH,EAAO,WAAYW,CAAQ,CACjC,EAEA,YAAuCP,EAAqB,CAC1D,OAAOC,EAAIL,EAAO,WAAYI,CAAG,CACnC,EAEA,eAA2BQ,EAAyB,CAClDT,EAAIH,EAAO,cAAeY,CAAW,CACvC,EAEA,eAA0CR,EAAmB,CAC3D,OAAOC,EAAIL,EAAO,cAAeI,CAAG,CACtC,EAEA,cAA0BQ,EAAyB,CACjDT,EAAIH,EAAO,aAAcY,CAAW,CACtC,EAEA,cAAyCR,EAAmB,CAC1D,OAAOC,EAAIL,EAAO,aAAcI,CAAG,CACrC,EAEA,iBAA6BS,EAA0C,CACrEV,EAAIH,EAAO,gBAAiBa,CAAa,CAC3C,EAEA,iBAA4CT,EAAkC,CAC5E,OAAOC,EAAIL,EAAO,gBAAiBI,CAAG,CACxC,EAEA,2BAAuCU,EAA6C,CAClFX,EAAIH,EAAO,0BAA2Bc,CAAK,CAC7C,EAEA,2BAAsDV,EAA6C,CACjG,OAAOC,EAAIL,EAAO,0BAA2BI,CAAG,CAClD,EAEA,WAAsB,CACpB,IAAMW,EAAiC,CAAC,GAAGf,CAAK,EAEhD,OAAAe,EAAM,YAAcf,EAAM,YAC1Be,EAAM,WAAaf,EAAM,WAEzB,OAAOe,EAAM,YACb,OAAOA,EAAM,WAENC,EAAUD,EAAO,CAAE,OAAQ,CAAC,0BAA2B,OAAO,CAAE,CAAC,CAC1E,CACF,EAE2DjB,EAAW,CACxE,EAEOmB,EAAQnB,GChJf,IAAOoB,EAA8CC,GAAgB,CACnE,IAAMC,EAAQC,EAAsCF,CAAI,EAElD,CAAE,YAAaG,EAAa,WAAYC,CAAW,EAAIH,EAEzDE,GAAe,OAAOA,GAAgB,WACxCF,EAAM,YAAc,IAAI,KAAKE,CAAW,EACxC,OAAOF,EAAM,aAGXG,GAAc,OAAOA,GAAe,WACtCH,EAAM,WAAa,IAAI,KAAKG,CAAU,EACtC,OAAOH,EAAM,YAGf,IAAMI,EACJJ,EAAM,uBAER,cAAOA,EAAM,uBAETI,IACFJ,EAAM,wBAA0BI,EAAwB,IAAI,CAAC,CAAE,kBAAAC,EAAmB,cAAAC,CAAc,IAAM,CACpG,IAAMC,EAAcC,EAAY,CAAE,OAAQH,CAAkB,CAAC,EACvDI,EAAUC,EAAQ,CAAE,OAAQJ,CAAc,CAAC,EAEjD,OAAOK,GAAuBJ,EAAaE,CAAO,CACpD,CAAC,GAGID,EAAeR,CAA4B,CACpD,EC/CA,OAAOY,OAA6C,QAGpD,IAAIC,GAA+BD,GAAM,OAAO,EAC5CE,GAAqC,KACrCC,GAAe,CAAC,EAEPC,GAAoBC,GAAkC,CACjEJ,GAAgBI,CAClB,EAEaC,EAAmB,IAAqBL,GAExCM,GAAmBC,GAAyC,CACvEN,GAAeM,CACjB,EAEaC,GAAkB,IAA4BP,GAE9CQ,GAAWC,GAAwB,CAC9CR,GAAOQ,CACT,EAEaC,GAAU,IAAcT,GCvBrC,IAAAU,GAAA,CACE,KAAQ,sBACR,QAAW,QACX,YAAe,yDACf,SAAY,CACV,SACA,eACA,YACA,yBACA,UACA,qBACA,mBACA,SACA,UACA,cACA,aACA,UACA,MACA,QACF,EACA,QAAW,aACX,OAAU,cACV,SAAY,0BACZ,WAAc,CACZ,KAAQ,MACR,IAAO,yDACT,EACA,KAAQ,CACN,IAAO,gEACT,EACA,aAAgB,CACd,CACE,KAAQ,cACR,MAAS,yBACT,IAAO,4BACT,EACA,CACE,KAAQ,wBACR,MAAS,iCACT,IAAO,iCACT,EACA,CACE,KAAQ,oBACR,MAAS,oBACT,IAAO,+BACT,CACF,EACA,KAAQ,iBACR,OAAU,iBACV,MAAS,kBACT,QAAW,CACT,IAAK,CACH,MAAS,oBACT,OAAU,mBACV,QAAW,kBACb,CACF,EACA,MAAS,CACP,MACF,EACA,QAAW,CACT,MAAS,OACT,QAAW,0DACX,IAAO,eACP,KAAQ,aACR,WAAY,eACZ,KAAQ,gCACR,UAAa,eACb,iBAAkB,mCACpB,EACA,iBAAoB,CAClB,MAAS,QACX,EACA,aAAgB,CAAC,EACjB,gBAAmB,CACjB,aAAc,UACd,cAAe,WACf,mCAAoC,UACpC,4BAA6B,UAC7B,wBAAyB,UACzB,MAAS,SACT,OAAU,UACV,uBAAwB,UACxB,SAAY,QACZ,KAAQ,SACR,WAAc,SACd,oBAAqB,UACrB,OAAU,QACZ,EACA,QAAW,CACT,KAAQ,YACR,IAAO,UACT,EACA,aAAgB,CACd,OACA,kBACA,cACF,CACF,EClGA,IAAOC,GAA4CC,GAAoB,CACrE,IAAMC,EAAkB,CAAC,EAEnBC,EAAQ,CAACC,EAAcC,IAA6B,CACxD,GAAID,GAAQ,KAIZ,IAAI,MAAM,QAAQA,CAAG,EAAG,CACtBA,EAAI,QAASE,GAAS,CACpBH,EAAMG,EAAMD,EAAY,GAAGA,CAAS,GAAK,EAAE,CAC7C,CAAC,EAED,MACF,CAEA,GAAID,aAAe,KAAM,CACvBF,EAAM,KAAK,GAAGG,CAAS,IAAI,mBAAmBD,EAAI,YAAY,CAAC,CAAC,EAAE,EAClE,MACF,CAEA,GAAI,OAAOA,GAAQ,SAAU,CAC3B,OAAO,KAAKA,CAAG,EAAE,QAASG,GAAQ,CAChC,IAAMC,EAAQJ,EAAIG,CAAuB,EACzCJ,EAAMK,EAAOH,EAAY,GAAGA,CAAS,IAAI,mBAAmBE,CAAG,CAAC,IAAM,mBAAmBA,CAAG,CAAC,CAC/F,CAAC,EAED,MACF,CAEAL,EAAM,KAAK,GAAGG,CAAS,IAAI,mBAAmBD,CAAa,CAAC,EAAE,EAChE,EAEA,OAAAD,EAAMF,CAAI,EAEHC,EAAM,KAAK,GAAG,CACvB,EChBA,IAAOO,EAAQ,MACbC,EACAC,EACAC,EACAC,EACAC,IACyC,CACzC,IAAMC,EAAkC,CACtC,OAAQ,mBACR,mBAAoB,gBACtB,EAGI,OAAO,QAAY,KAAe,OAAO,UAAU,SAAS,KAAK,OAAO,IAAM,qBAChFA,EAAQ,YAAY,EAAI,2BAA2BC,GAAI,OAAO,SAAS,QAAQ,OAAO,IAGxF,IAAMC,EAA0B,CAC9B,OAAAN,EACA,QAAAI,EACA,IAAK,UAAU,GAAGL,EAAQ,WAAW,CAAC,IAAIE,CAAQ,EAAE,EACpD,aAAc,OACd,iBAAkB,CAACM,EAAYC,IACzBA,EAAE,cAAc,IAAM,oCACjBC,GAAcF,CAA4B,GAG9CC,EAAE,qBAAqB,IAC1BA,EAAE,qBAAqB,EAAI,2BAA2BH,GAAI,OAAO,IAG5DE,EAEX,EAWA,OATI,CAAC,MAAO,OAAQ,OAAO,EAAE,QAAQP,EAAO,YAAY,CAAC,GAAK,GACxDM,EAAI,SAAW,SACjBF,EAAQ,cAAc,EAAI,qCAE5BE,EAAI,KAAOJ,GAEXI,EAAI,OAASJ,EAGPH,EAAQ,gBAAgB,EAAG,CAEjC,KAAKW,EAAa,qBAChB,CACE,GAAI,CAACX,EAAQ,YAAY,EACvB,MAAM,IAAIY,EAAU,8BAA8B,EAGpD,GAAI,CAACZ,EAAQ,YAAY,EACvB,MAAM,IAAIY,EAAU,8BAA8B,EAGpDL,EAAI,KAAO,CACT,SAAUP,EAAQ,YAAY,EAC9B,SAAUA,EAAQ,YAAY,CAChC,CACF,CACA,MAEF,KAAKW,EAAa,sBAChB,GAAI,CAACX,EAAQ,UAAU,EACrB,MAAM,IAAIY,EAAU,4BAA4B,EAGlDP,EAAQ,cAAgB,SAAS,KAAK,UAAUL,EAAQ,UAAU,CAAC,EAAE,CAAC,GACtE,MAEF,KAAKW,EAAa,yBAChB,MACF,QACE,MAAM,IAAIC,EAAU,uBAAuB,CAC/C,CAEA,IAAMC,EAA0BT,GAAQ,eAAiBU,EAAiB,EAE1E,GAAI,CACF,IAAMC,EAAwC,MAAMF,EAASN,CAAG,EAC1DS,EAAOD,EAAS,KAAK,OAAO,MAAQ,CAAC,EAS3C,GAPAE,GAAgBF,CAAQ,EACxBG,GAAQF,CAAI,EAERZ,GAAQ,YACVA,EAAO,WAAWW,CAAQ,EAGxBC,EAAK,OAAS,EAAG,CACfZ,GAAQ,QACVA,EAAO,OAAOY,CAAI,EAGpB,IAAMG,EAAQH,EAAK,KAAK,CAAC,CAAE,KAAAI,CAAK,IAAMA,IAAS,OAAO,EAEtD,GAAID,EACF,MAAM,IAAIP,EAAUO,EAAM,MAAOA,EAAM,GAAIJ,EAAS,OAAQA,EAAS,QAASA,CAAQ,CAE1F,CAEA,OAAOA,CACT,OAASM,EAAG,CACV,IAAMC,EAAQD,EAERN,EAAWO,EAAM,SACjBN,EAAQD,GAAU,MAAuB,OAAO,MAAQ,CAAC,EAK/D,GAHAE,GAAgBF,GAAY,IAAI,EAChCG,GAAQF,CAAI,EAEPK,EAAiB,aAAc,CAClC,IAAIE,EAAWF,EAAiB,QAEhC,GAAIN,GAAU,MAAQC,EAAK,OAAS,EAAG,CACrC,IAAMG,EAAQH,EAAK,KAAK,CAAC,CAAE,KAAAI,CAAK,IAAMA,IAAS,OAAO,EAElDD,IACFI,EAAUJ,EAAM,MAEpB,CAEA,MAAM,IAAIP,EACRW,EACAD,EAAM,KACNA,EAAM,OACNA,EAAM,QACNA,EAAM,QACR,CACF,CAEA,MAAMD,CACR,CACF,EChJO,IAAMG,GAAM,CACjBC,EACAC,EACAC,EACAC,IACyCC,EAAQJ,EAAS,MAAOC,EAAUC,EAAMC,CAAM,EAE5EE,GAAO,CAClBL,EACAC,EACAC,EACAC,IACyCC,EAAQJ,EAAS,OAAQC,EAAUC,EAAMC,CAAM,EAE7EG,GAAM,CACjBN,EACAC,EACAC,EACAC,IACyCC,EAAQJ,EAAS,SAAUC,EAAUC,EAAMC,CAAM,ECd5F,IAAMI,GAAoB,CACxB,iBAA6BC,EAAyB,CACpDC,GAAiBD,CAAQ,CAC3B,EAEA,kBAA4C,CAC1C,OAAOE,EAAiB,CAC1B,EAEA,wBAAyD,CACvD,OAAOC,GAAgB,CACzB,EAEA,SAA4B,CAC1B,OAAOC,GAAQ,CACjB,EAEA,IAEEC,EACAC,EACAC,EACAC,EACsC,CACtC,OAAOC,GAAIJ,EAASC,EAAUC,EAAMC,CAAM,CAC5C,EAEA,KAEEH,EACAC,EACAC,EACAC,EACsC,CACtC,OAAOE,GAAKL,EAASC,EAAUC,EAAMC,CAAM,CAC7C,EAEA,OAEEH,EACAC,EACAC,EACAC,EACsC,CACtC,OAAOG,GAAIN,EAASC,EAAUC,EAAMC,CAAM,CAC5C,EAEA,QAEEH,EACAO,EACAN,EACAC,EACAC,EACsC,CACtC,OAAOK,EAAQR,EAASO,EAAQN,EAAUC,EAAMC,CAAM,CACxD,EAEA,cAA6DD,EAAiB,CAC5E,OAAOO,GAAcP,CAAI,CAC3B,CACF,EAEOQ,EAAQhB,GCxEf,IAAMiB,GAAmB,IACnBC,GAAwB,IAEjBC,EAAUC,GACd,OAAO,KAAKA,CAAM,EACtB,IAAKC,GAAQ,GAAGA,CAAG,GAAGH,EAAqB,GAAG,OAAOE,EAAOC,CAAG,CAAC,CAAC,EAAE,EACnE,KAAKJ,EAAgB,EAGbK,GAAUF,GAA2C,CAChE,IAAMG,EAAiC,CAAC,EAExC,OAAAH,EAAO,MAAMH,EAAgB,EAAE,QAASO,GAAM,CAC5C,GAAM,CAACC,EAAMC,CAAK,EAAIF,EAAE,MAAMN,EAAqB,EACnDK,EAAOE,CAAI,EAAIC,CACjB,CAAC,EAEMH,CACT,ECjBO,IAAMI,GAAaC,GACjB,OAAOA,EAAU,KAAe,OAAOA,GAAU,WAG7CC,GAAWD,GACjBD,GAAUC,CAAK,EAIhB,OAAOA,GAAU,SACZ,CAAC,OAAO,MAAMA,CAAK,EAGrB,GAPE,GAUEE,EAAgB,CAACF,EAAgBG,IAAuB,CACnE,GAAIH,IAAU,KACZ,MAAM,IAAI,UAAU,cAAcG,CAAI,mBAAmB,EAG3D,GAAI,CAACF,GAAQD,CAAK,EAChB,MAAM,IAAI,UAAU,cAAcG,CAAI,yBAAyB,CAEnE,EAEaC,EAAiB,CAACJ,EAAgBG,IAAuB,CAGpE,GAFAD,EAAcF,EAAOG,CAAI,EAErB,CAACH,EACH,MAAM,IAAI,UAAU,cAAcG,CAAI,oBAAoB,CAE9D,EC9BA,IAAME,GAAO,SAA4BC,EAAYC,EAAsC,CACzF,IAAMC,EAAa,SAASD,GAAY,YAAc,IAAK,EAAE,EACvDE,EAAc,SAASF,GAAY,aAAe,IAAK,EAAE,EACzDG,EAAa,SAASH,GAAY,YAAc,IAAK,EAAE,EACvDI,EAAa,SAASJ,GAAY,YAAc,IAAK,EAAE,EAEvDK,EAA6B,CACjC,YAA0B,CACxB,OAAON,CACT,EAEA,eAAsC,CACpC,MAAO,CACL,WAAAE,EACA,YAAAC,EACA,WAAAC,EACA,WAAAC,EACA,QAASD,EAAaF,EAAa,CACrC,CACF,EAEA,eAAkC,CAChC,OAAOA,CACT,EAEA,gBAAmC,CACjC,OAAOC,CACT,EAEA,eAAkC,CAChC,OAAOC,CACT,EAEA,eAAkC,CAChC,OAAOC,CACT,EAEA,SAA6B,CAC3B,OAAOD,EAAaF,EAAa,CACnC,CACF,EAEA,OAAO,IAAI,MAAMF,EAAS,CACxB,IAAIO,EAAQC,EAAuBC,EAAU,CAC3C,OAAI,OAAO,OAAOH,EAAME,CAAI,EACnBF,EAAKE,CAAyB,EAGhC,QAAQ,IAAID,EAAKC,EAAMC,CAAQ,CACxC,EAEA,IAAIF,EAAKC,EAAME,EAAOD,EAAU,CAC9B,OAAO,QAAQ,IAAIF,EAAKC,EAAME,EAAOD,CAAQ,CAC/C,EAEA,gBAAiB,CACf,OAAQV,GAAK,WAAwB,IACvC,CACF,CAAC,CACH,EAEOY,EAAQZ,GCjCf,IAAMa,EAAWC,EAAU,OAAO,cAC5BC,GAAiBD,EAAU,OAAO,qBAClCE,GAAOF,EAAU,OAAO,KAExBG,GAAgC,CAiBpC,MAAM,IACJC,EACAC,EACAC,EAC4C,CAC5CC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGL,CAAQ,IAAIM,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAkCH,CAAI,CAC/C,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC4D,CAC5D,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKb,EAAU,MAAM,EAAI,OAAOY,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASL,EAAUc,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAA2DD,GAAO,KACrE,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAkCD,CAAC,CAAC,EAElD,OAAOO,EAAKD,GAAW,CAAC,EAAGD,CAAuB,CACpD,EAmBA,MAAM,OACJX,EACAc,EACAZ,EAC4C,CAC5Ca,EAAcD,EAAQ,QAAQ,EAG9B,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASL,EAAUmB,EAAO,UAAU,EAAGZ,CAAM,GAC3D,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAkCH,CAAI,CAC/C,EAqBA,MAAM,OACJJ,EACAC,EACAa,EACAZ,EAC4C,CAC5CC,EAAeF,EAAQ,QAAQ,EAC/Bc,EAAcD,EAAQ,QAAQ,EAG9B,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGL,CAAQ,IAAIM,CAAM,GAAIa,EAAO,UAAU,EAAGZ,CAAM,GAC1E,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAkCH,CAAI,CAC/C,EAqBA,OACEJ,EACAC,EACAe,EACAd,EACwB,CACxB,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGL,CAAQ,IAAIM,CAAM,GAAI,CAAE,aAAc,EAAQe,CAAc,EAAGd,CAAM,CACzG,EAqBA,MAAM,OACJF,EACAC,EACAgB,EACAf,EACgD,CAChDC,EAAeF,EAAQ,QAAQ,EAC/BE,EAAec,EAAgB,gBAAgB,EAE/C,IAAMR,EAAO,CAAE,CAACb,EAAU,SAAS,eAAe,EAAGqB,CAAe,EAOpE,OALiB,MAAMZ,EAAQ,KAAKL,EAAS,GAAGL,CAAQ,IAAIM,CAAM,IAAIJ,EAAc,GAAIY,EAAMP,CAAM,GAC7E,KAAK,OAEJ,KAAK,OAAQI,GAAMA,EAAE,OAASV,EAAU,QAAQ,IAAI,GAE3D,IAAKU,GAAMY,EAAoCZ,CAAC,CAAC,GAAK,CAAC,CAC1E,CACF,EAEOa,GAAQpB,GCrOf,IAAMqB,GAAN,KAA6D,CAI3D,aAAc,CACZ,KAAK,YAAc,CAAC,CACtB,CAEA,eAAyD,CACvD,OAAO,KAAK,WACd,CAEA,cAAcC,EAA2C,CACvD,YAAK,YAAYA,EAAW,mBAAmB,EAAIA,EAC5C,IACT,CAEA,cAA6BC,EAA6BC,EAAsC,CAC9F,OAAO,KAAK,YAAYD,CAAmB,GAAKC,CAClD,CAEA,2BAA2BF,EAA2C,CACpE,OAAO,KAAK,cAAcA,CAAU,CACtC,CAEA,2BAA0CC,EAA6BC,EAAsC,CAC3G,OAAO,KAAK,cAAcD,EAAqBC,CAAG,CACpD,CAEA,OAAOC,EAA0B,CAC/B,GAAI,CAACC,GAAQD,CAAG,EACd,MAAM,IAAI,UAAU,WAAWA,EAAI,SAAS,CAAC,EAAE,EAGjD,YAAK,IAAM,IAAI,KAAKA,CAAG,EAChB,IACT,CAEA,QAA2B,CACzB,OAAO,KAAK,GACd,CAEA,UAAmB,CACjB,IAAIE,EAAO,qBAEX,cAAO,KAAK,KAAK,WAAW,EAAE,QAASC,GAAa,CAClDD,GAAQ,iBAAiBC,CAAQ,IAE7BA,KAAY,KAAK,cACnBD,GAAQ,KAAK,UAAU,KAAK,YAAYC,CAAQ,CAAC,EAErD,CAAC,EAEDD,GAAQ,IAEDA,CACT,CACF,EAEOE,GAAQ,IAAiC,IAAIR,GChCpD,IAAMS,EAAWC,EAAU,SAAS,cAC9BC,GAAmBD,EAAU,SAAS,uBACtCE,GAAmBF,EAAU,SAAS,uBACtCG,GAAOH,EAAU,SAAS,KAE1BI,GAAoC,CAiBxC,MAAM,IACJC,EACAC,EACAC,EACgD,CAChDC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGN,CAAQ,IAAIO,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAsCH,CAAI,CACnD,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EACgE,CAChE,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKd,EAAU,MAAM,EAAI,OAAOa,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASN,EAAUe,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAA4DD,GAAO,KACtE,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAsCD,CAAC,CAAC,EAEtD,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAsBA,MAAM,OACJX,EACAc,EACAC,EACAb,EACgD,CAChDc,EAAcD,EAAU,UAAU,EAElC,IAAMN,EAAOM,EAAS,UAAU,EAE5BD,IACFL,EAAK,cAAgBK,GAIvB,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASN,EAAUe,EAAMP,CAAM,GAC7C,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAsCH,CAAI,CACnD,EAqBA,MAAM,OACJJ,EACAC,EACAc,EACAb,EACgD,CAChDC,EAAeF,EAAQ,QAAQ,EAC/Be,EAAcD,EAAU,UAAU,EAGlC,IAAMX,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGN,CAAQ,IAAIO,CAAM,GAAIc,EAAS,UAAU,EAAGb,CAAM,GAC5E,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAsCH,CAAI,CACnD,EAqBA,OACEJ,EACAC,EACAgB,EACAf,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGN,CAAQ,IAAIO,CAAM,GAAI,CAAE,aAAc,EAAQgB,CAAc,EAAGf,CAAM,CACzG,EAuBA,MAAM,SACJF,EACAC,EACAiB,EACAhB,EAC6B,CAC7BC,EAAeF,EAAQ,QAAQ,EAE/B,IAAMQ,EAAyC,CAAC,EAEhD,GAAIS,EAAsB,CACxB,IAAMJ,EAAoCI,EAAqB,cAE3DJ,IACFL,EAAK,cAAgBK,GAGvB,IAAMK,EAAqBD,EAAqB,mBAEhD,OAAO,KAAKC,CAAkB,EAAE,QAASC,GAAgB,CACvDX,EAAKW,CAAG,EAAIF,EAAqB,oBAAoBE,CAAG,CAC1D,CAAC,EAEGF,EAAqB,gBAAgB,IACvCT,EAAK,cAAgB,IAGnBS,EAAqB,SAAS,IAChCT,EAAK,OAAS,IAGhB,IAAMY,EAAaH,EAAqB,cAAc,EAEtD,OAAO,KAAKG,CAAU,EAAE,QAAQ,CAACC,EAAUC,IAAM,CAC/Cd,EAAK,GAAGd,EAAU,cAAc,qBAAqB,GAAG4B,CAAC,EAAE,EAAID,EAE/D,IAAME,EAAYH,EAAWC,CAAQ,EAEjCE,GACF,OAAO,KAAKA,CAAS,EAAE,QAASJ,IAAgB,CAC9CX,EAAKW,GAAMG,CAAC,EAAIC,EAAUJ,EAAG,CAC/B,CAAC,CAEL,CAAC,CACH,CAEA,IAAMK,EAAW,MAAMpB,EAAQ,KAAKL,EAAS,GAAGN,CAAQ,IAAIO,CAAM,IAAIL,EAAgB,GAAIa,EAAMP,CAAM,EAEhGwB,EAAoBC,GAAkB,EAEtCC,EAAMH,EAAS,KAAK,IAE1B,OAAIG,GACFF,EAAkB,OAAOE,CAAG,EAGhBH,EAAS,KAAK,OAAO,KAAK,OAAQnB,GAAMA,EAAE,OAASX,EAAU,WAAW,IAAI,GAEnF,QAASW,GAAM,CACpBoB,EAAkB,cAAcG,EAAavB,CAAC,CAAC,CACjD,CAAC,EAEMoB,CACT,EAoBA,SACE1B,EACAC,EACA6B,EACA5B,EACsC,CACtCC,EAAeF,EAAQ,QAAQ,EAC/BE,EAAe2B,EAAsB,sBAAsB,EAE3D,IAAMrB,EAAO,CAAE,qBAAAqB,CAAqB,EAEpC,OAAOzB,EAAQ,KAAKL,EAAS,GAAGN,CAAQ,IAAIO,CAAM,IAAIJ,EAAgB,GAAIY,EAAMP,CAAM,CACxF,CACF,EAEO6B,GAAQhC,GC3Sf,IAAMiC,EAAWC,EAAU,QAAQ,cAC7BC,GAAOD,EAAU,QAAQ,KAEzBE,GAAkC,CAiBtC,MAAM,IACJC,EACAC,EACAC,EAC8C,CAC9CC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC8D,CAC9D,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,EAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAA0DD,GAAO,KACpE,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAoCD,CAAC,CAAC,EAEpD,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EA+BA,MAAM,OACJX,EACAc,EACAC,EACAC,EACAC,EACAf,EAC8C,CAC9CgB,EAAcD,EAAS,SAAS,EAEhC,IAAMR,EAAOQ,EAAQ,UAAU,EAE3BH,IACFL,EAAK,eAAiBK,GAGpBC,IACFN,EAAK,sBAAwBM,GAG3BC,IACFP,EAAK,kBAAoBO,GAI3B,IAAMZ,GADW,MAAMC,EAAQ,KAAKL,EAASJ,EAAUa,EAAMP,CAAM,GAC7C,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAyBA,MAAM,OACJJ,EACAC,EACAe,EACAC,EACAf,EAC8C,CAC9CC,EAAeF,EAAQ,QAAQ,EAC/BiB,EAAcD,EAAS,SAAS,EAEhC,IAAMR,EAAOQ,EAAQ,UAAU,EAE3BD,IACFP,EAAK,kBAAoBO,GAI3B,IAAMZ,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAIQ,EAAMP,CAAM,GAC5D,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAuBA,OACEJ,EACAC,EACAkB,EACAjB,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQkB,CAAc,EAAGjB,CAAM,CACzG,CACF,EAEOkB,GAAQrB,GC3Mf,IAAMsB,EAAWC,EAAU,gBAAgB,cACrCC,GAAOD,EAAU,gBAAgB,KAEjCE,GAAkD,CAiBtD,MAAM,IACJC,EACAC,EACAC,EAC8D,CAC9DC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoDH,CAAI,CACjE,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC8E,CAC9E,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,EAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAA0ED,GAAO,KACpF,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAoDD,CAAC,CAAC,EAEpE,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAsBA,MAAM,OACJX,EACAc,EACAC,EACAb,EAC8D,CAC9Dc,EAAcD,EAAiB,iBAAiB,EAEhD,IAAMN,EAAOM,EAAgB,UAAU,EAEnCD,IACFL,EAAK,oBAAsBK,GAI7B,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,EAAUa,EAAMP,CAAM,GAC7C,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoDH,CAAI,CACjE,EAqBA,MAAM,OACJJ,EACAC,EACAc,EACAb,EAC8D,CAC9DC,EAAeF,EAAQ,QAAQ,EAC/Be,EAAcD,EAAiB,iBAAiB,EAGhD,IAAMX,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAIc,EAAgB,UAAU,EAAGb,CAAM,GACnF,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoDH,CAAI,CACjE,EAqBA,OACEJ,EACAC,EACAgB,EACAf,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQgB,CAAc,EAAGf,CAAM,CACzG,CACF,EAEOgB,GAAQnB,GCnLf,IAAMoB,EAAWC,EAAU,aAAa,cAClCC,GAAOD,EAAU,aAAa,KAE9BE,GAA4C,CAiBhD,MAAM,IACJC,EACAC,EACAC,EACwD,CACxDC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA8CH,CAAI,CAC3D,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EACwE,CACxE,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,EAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAAoED,GAAO,KAC9E,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAA8CD,CAAC,CAAC,EAE9D,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAmBA,MAAM,OACJX,EACAc,EACAZ,EACwD,CACxDa,EAAcD,EAAc,cAAc,EAG1C,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,EAAUkB,EAAa,UAAU,EAAGZ,CAAM,GACjE,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA8CH,CAAI,CAC3D,EAqBA,MAAM,OACJJ,EACAC,EACAa,EACAZ,EACwD,CACxDC,EAAeF,EAAQ,QAAQ,EAC/Bc,EAAcD,EAAc,cAAc,EAG1C,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAIa,EAAa,UAAU,EAAGZ,CAAM,GAChF,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA8CH,CAAI,CAC3D,EAqBA,OACEJ,EACAC,EACAe,EACAd,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQe,CAAc,EAAGd,CAAM,CACzG,CACF,EAEOe,GAAQlB,GC1Kf,IAAMmB,GAAWC,EAAU,cAAc,cACnCC,GAAOD,EAAU,cAAc,KAE/BE,GAA8C,CAiBlD,MAAM,IACJC,EACAC,EACAC,EAC0D,CAC1DC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgDH,CAAI,CAC7D,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC0E,CAC1E,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,GAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAAsED,GAAO,KAChF,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAgDD,CAAC,CAAC,EAEhE,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAqBA,MAAM,OACJX,EACAC,EACAa,EACAZ,EAC0D,CAC1DC,EAAeF,EAAQ,QAAQ,EAC/Bc,EAAcD,EAAe,eAAe,EAG5C,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAIa,EAAc,UAAU,EAAGZ,CAAM,GACjF,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgDH,CAAI,CAC7D,CACF,EAEOY,GAAQjB,GCpGf,IAAMkB,EAAWC,EAAU,cAAc,cACnCC,GAAOD,EAAU,cAAc,KAE/BE,GAA8C,CAiBlD,MAAM,IACJC,EACAC,EACAC,EAC0D,CAC1DC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgDH,CAAI,CAC7D,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC0E,CAC1E,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,EAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAAsED,GAAO,KAChF,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAgDD,CAAC,CAAC,EAEhE,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAsBA,MAAM,OACJX,EACAc,EACAC,EACAb,EAC0D,CAC1Dc,EAAcD,EAAe,eAAe,EAE5C,IAAMN,EAAOM,EAAc,UAAU,EAEjCD,IACFL,EAAK,cAAgBK,GAIvB,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,EAAUa,EAAMP,CAAM,GAC7C,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgDH,CAAI,CAC7D,EAqBA,MAAM,OACJJ,EACAC,EACAc,EACAb,EAC0D,CAC1DC,EAAeF,EAAQ,QAAQ,EAC/Be,EAAcD,EAAe,eAAe,EAG5C,IAAMX,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAIc,EAAc,UAAU,EAAGb,CAAM,GACjF,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgDH,CAAI,CAC7D,EAqBA,OACEJ,EACAC,EACAgB,EACAf,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQgB,CAAc,EAAGf,CAAM,CACzG,CACF,EAEOgB,GAAQnB,GC/Kf,IAAMoB,EAAWC,EAAU,QAAQ,cAC7BC,GAAOD,EAAU,QAAQ,KAEzBE,GAAkC,CAiBtC,MAAM,IACJC,EACAC,EACAC,EAC8C,CAC9CC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC8D,CAC9D,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,EAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAA0DD,GAAO,KACpE,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAoCD,CAAC,CAAC,EAEpD,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAmBA,MAAM,OACJX,EACAc,EACAZ,EAC8C,CAC9Ca,EAAcD,EAAS,SAAS,EAGhC,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,EAAUkB,EAAQ,UAAU,EAAGZ,CAAM,GAC5D,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAqBA,MAAM,OACJJ,EACAC,EACAa,EACAZ,EAC8C,CAC9CC,EAAeF,EAAQ,QAAQ,EAC/Bc,EAAcD,EAAS,SAAS,EAGhC,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAIa,EAAQ,UAAU,EAAGZ,CAAM,GAC3E,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAoCH,CAAI,CACjD,EAqBA,OACEJ,EACAC,EACAe,EACAd,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,CAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQe,CAAc,EAAGd,CAAM,CACzG,CACF,EAEOe,GAAQlB,GCrKf,IAAMmB,GAAWC,EAAU,MAAM,cAC3BC,GAAOD,EAAU,MAAM,KAEvBE,GAA8B,CAiBlC,MAAM,IACJC,EACAC,EACAC,EAC0C,CAC1CC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgCH,CAAI,CAC7C,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EAC0D,CAC1D,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,GAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAAsDD,GAAO,KAChE,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAAgCD,CAAC,CAAC,EAEhD,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAkBA,MAAM,OACJX,EACAc,EACAZ,EAC0C,CAC1Ca,EAAcD,EAAO,OAAO,EAG5B,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,GAAUkB,EAAM,UAAU,EAAGZ,CAAM,GAC1D,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAAgCH,CAAI,CAC7C,EAqBA,OACEJ,EACAC,EACAe,EACAd,EACsC,CACtC,OAAAC,EAAeF,EAAQ,QAAQ,EAExBI,EAAQ,OAAOL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAI,CAAE,aAAc,EAAQe,CAAc,EAAGd,CAAM,CACzG,CACF,EAEOe,GAAQlB,GC7Hf,IAAMmB,GAAWC,EAAU,YAAY,cACjCC,GAAOD,EAAU,YAAY,KAE7BE,GAA0C,CAiB9C,MAAM,IACJC,EACAC,EACAC,EACsD,CACtDC,EAAeF,EAAQ,QAAQ,EAG/B,IAAMG,GADW,MAAMC,EAAQ,IAAIL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAI,CAAC,EAAGC,CAAM,GACzD,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA4CH,CAAI,CACzD,EAkBA,MAAM,KACJJ,EACAQ,EACAN,EACsE,CACtE,IAAMO,EAAuC,CAAC,EAE1CD,IACFC,EAAKZ,EAAU,MAAM,EAAI,OAAOW,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAI9E,IAAMG,GADW,MAAMN,EAAQ,IAAIL,EAASJ,GAAUa,EAAMP,CAAM,GAC3C,KAAK,MAEtBU,EAAkED,GAAO,KAC5E,OAAQL,GAAMA,EAAE,OAASR,EAAI,EAC7B,IAAKQ,GAAMC,EAA4CD,CAAC,CAAC,EAE5D,OAAOO,EAAKD,GAAQ,CAAC,EAAGD,CAAuB,CACjD,EAmBA,MAAM,OACJX,EACAc,EACAZ,EACsD,CACtDa,EAAcD,EAAa,aAAa,EAGxC,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAASJ,GAAUkB,EAAY,UAAU,EAAGZ,CAAM,GAChE,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA4CH,CAAI,CACzD,EAqBA,MAAM,OACJJ,EACAC,EACAa,EACAZ,EACsD,CACtDC,EAAeF,EAAQ,QAAQ,EAC/Bc,EAAcD,EAAa,aAAa,EAGxC,IAAMV,GADW,MAAMC,EAAQ,KAAKL,EAAS,GAAGJ,EAAQ,IAAIK,CAAM,GAAIa,EAAY,UAAU,EAAGZ,CAAM,GAC/E,KAAK,OAAO,KAAK,KAAMI,GAAMA,EAAE,OAASR,EAAI,EAElE,OAAOS,EAA4CH,CAAI,CACzD,CACF,EAEOY,GAAQjB,GC7If,IAAMkB,GAAeC,EAAU,QAAQ,cAEjCC,GAAkC,CActC,MAAM,iBAAiBC,EAA0BC,EAAoE,CACnH,IAAMC,EAAW,GAAGL,EAAY,IAAIC,EAAU,QAAQ,2BAA2B,GAG3EK,GADW,MAAMC,EAAQ,IAAIJ,EAASE,EAAU,OAAWD,CAAM,GAChD,KAAK,MAEtBI,EAAOP,EAAU,QAAQ,aAEzBQ,EAAqCH,GAAO,KAC/C,OAAQI,GAAMA,EAAE,OAASF,CAAI,EAC7B,IAAKE,GAAMC,EAA+BD,CAAC,EAAE,IAAI,EAEpD,OAAOE,EAAMH,GAAwC,CAAC,EAAGH,CAAuB,CAClF,EAeA,MAAM,oBACJH,EACAC,EAC+C,CAC/C,IAAMC,EAAW,GAAGL,EAAY,IAAIC,EAAU,QAAQ,8BAA8B,GAG9EK,GADW,MAAMC,EAAQ,IAAIJ,EAASE,EAAU,OAAWD,CAAM,GAChD,KAAK,MAEtBI,EAAOP,EAAU,QAAQ,qBAEzBY,EAAwCP,GAAO,KAClD,OAAQI,GAAMA,EAAE,OAASF,CAAI,EAC7B,IAAKE,GAAMC,EAA+BD,CAAC,EAAE,IAAI,EAEpD,OAAOE,EAAMC,GAA8C,CAAC,EAAGP,CAAuB,CACxF,EAiBA,MAAM,cACJH,EACAW,EACAV,EACwC,CACxC,IAAMW,EAAuC,CAAC,EAE1CD,IACFC,EAAKd,EAAU,MAAM,EAAI,OAAOa,GAAW,SAAWA,EAASE,EAAOF,CAAM,GAG9E,IAAMT,EAAW,GAAGL,EAAY,IAAIC,EAAU,QAAQ,uBAAuB,GAGvEK,GADW,MAAMC,EAAQ,IAAIJ,EAASE,EAAUU,EAAMX,CAAM,GAC3C,KAAK,MAEtBI,EAAOP,EAAU,QAAQ,aAEzBgB,EAAyCX,GAAO,KACnD,OAAQI,GAAMA,EAAE,OAASF,CAAI,EAC7B,IAAKE,GAAMQ,GAAcR,CAAC,CAAC,EAE9B,OAAOE,EAAKK,GAAa,CAAC,EAAGX,CAAuB,CACtD,CACF,EAEOa,GAAQjB,GC7Hf,IAAMkB,GAAN,KAAyC,CAQvC,YAAYC,EAAuB,CACjC,KAAK,QAAUA,GAAO,SAAW,0CACjC,KAAK,aAAeA,GAAO,cAAgBC,EAAiB,qBAC5D,KAAK,SAAWD,GAAO,SACvB,KAAK,SAAWA,GAAO,SACvB,KAAK,OAASA,GAAO,OACrB,KAAK,UAAYA,GAAO,SAC1B,CAEA,WAAWE,EAAuB,CAChC,YAAK,QAAUA,EACR,IACT,CAEA,YAAqB,CACnB,OAAO,KAAK,OACd,CAEA,gBAAgBC,EAAwC,CACtD,YAAK,aAAeA,EACb,IACT,CAEA,iBAAsC,CACpC,OAAO,KAAK,YACd,CAEA,YAAYC,EAAwB,CAClC,YAAK,SAAWA,EACT,IACT,CAEA,YAA2BC,EAAqB,CAC9C,OAAQ,KAAK,UAAYA,CAC3B,CAEA,YAAYC,EAAwB,CAClC,YAAK,SAAWA,EACT,IACT,CAEA,YAA2BD,EAAqB,CAC9C,OAAQ,KAAK,UAAYA,CAC3B,CAEA,UAAUE,EAAsB,CAC9B,YAAK,OAASA,EACP,IACT,CAEA,UAAyBF,EAAqB,CAC5C,OAAQ,KAAK,QAAUA,CACzB,CAEA,aAAaG,EAAyB,CACpC,YAAK,UAAYA,EACV,IACT,CAEA,aAA4BH,EAAqB,CAC/C,OAAQ,KAAK,WAAaA,CAC5B,CACF,EAEOI,GAAST,GAA2C,IAAID,GAAQC,CAAK,ECtE5E,IAAMU,GAAN,KAAmE,CAOjE,aAAc,CACZ,KAAK,WAAa,CAAC,EACnB,KAAK,mBAAqB,CAAC,CAC7B,CAEA,iBAAiBC,EAA6B,CAC5C,YAAK,cAAgBA,EACd,IACT,CAEA,kBAAuC,CACrC,OAAO,KAAK,aACd,CAEA,gBAAgBC,EAA4B,CAC1C,YAAK,mBAAmB,aAAeA,EAChC,IACT,CAEA,iBAAsC,CACpC,OAAO,KAAK,mBAAmB,YACjC,CAEA,kBAAkBC,EAA8B,CAC9C,YAAK,mBAAmB,eAAiBA,EAClC,IACT,CAEA,mBAAwC,CACtC,OAAO,KAAK,mBAAmB,cACjC,CAEA,uBAA4C,CAC1C,OAAO,KAAK,kBACd,CAEA,oBAAoBC,EAAaC,EAAqB,CACpD,YAAK,mBAAmBD,CAAG,EAAIC,EACxB,IACT,CAEA,oBAAmCD,EAAaE,EAAqB,CACnE,OAAQ,KAAK,mBAAmBF,CAAG,GAAKE,CAC1C,CAEA,iBAAiBC,EAA8B,CAC7C,YAAK,cAAgBA,EACd,IACT,CAEA,iBAAkB,CAChB,MAAO,CAAC,CAAC,KAAK,aAChB,CAEA,UAAUC,EAAuB,CAC/B,YAAK,OAASA,EACP,IACT,CAEA,UAAoB,CAClB,MAAO,CAAC,CAAC,KAAK,MAChB,CAEA,eAA4B,CAC1B,OAAO,KAAK,UACd,CAEA,aAAaC,EAA6BC,EAA4B,CACpE,YAAK,WAAWD,CAAmB,EAAIC,EAChC,IACT,CAEA,aAAaD,EAAoD,CAC/D,OAAO,KAAK,WAAWA,CAAmB,CAC5C,CAEA,qCAAqCA,EAAoD,CACvF,OAAO,KAAK,aAAaA,CAAmB,CAC9C,CAEA,qCAAqCA,EAA6BE,EAA0C,CAC1G,OAAO,KAAK,aAAaF,EAAqBE,CAAuB,CACvE,CACF,EAEOC,GAAQ,IAAoC,IAAIZ","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","FILTER_DELIMITER","FILTER_PAIR_DELIMITER","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file +{"version":3,"sources":["../src/constants/LicenseeSecretMode.ts","../src/constants/LicenseType.ts","../src/constants/NotificationEvent.ts","../src/constants/NotificationProtocol.ts","../src/constants/SecurityMode.ts","../src/constants/TimeVolumePeriod.ts","../src/constants/TokenType.ts","../src/constants/TransactionSource.ts","../src/constants/TransactionStatus.ts","../src/constants/index.ts","../src/constants/ApiKeyRole.ts","../src/constants/LicensingModel.ts","../src/constants/NodeSecretMode.ts","../src/constants/PaymentMethodEnum.ts","../src/converters/itemToObject.ts","../src/utils/helpers.ts","../src/utils/serialize.ts","../src/entities/defineEntity.ts","../src/entities/Bundle.ts","../src/converters/itemToBundle.ts","../src/entities/Country.ts","../src/converters/itemToCountry.ts","../src/entities/License.ts","../src/converters/itemToLicense.ts","../src/entities/Licensee.ts","../src/converters/itemToLicensee.ts","../src/entities/LicenseTemplate.ts","../src/converters/itemToLicenseTemplate.ts","../src/entities/Notification.ts","../src/converters/itemToNotification.ts","../src/entities/PaymentMethod.ts","../src/converters/itemToPaymentMethod.ts","../src/entities/Product.ts","../src/errors/NlicError.ts","../src/entities/ProductDiscount.ts","../src/converters/itemToProduct.ts","../src/entities/ProductModule.ts","../src/converters/itemToProductModule.ts","../src/entities/Token.ts","../src/converters/itemToToken.ts","../src/entities/LicenseTransactionJoin.ts","../src/entities/Transaction.ts","../src/converters/itemToTransaction.ts","../src/services/Service/instance.ts","../package.json","../src/services/Service/toQueryString.ts","../src/services/Service/request.ts","../src/services/Service/methods.ts","../src/services/Service/index.ts","../src/utils/filter.ts","../src/utils/validation.ts","../src/vo/Page.ts","../src/services/BundleService.ts","../src/vo/ValidationResults.ts","../src/services/LicenseeService.ts","../src/services/LicenseService.ts","../src/services/LicenseTemplateService.ts","../src/services/NotificationService.ts","../src/services/PaymentMethodService.ts","../src/services/ProductModuleService.ts","../src/services/ProductService.ts","../src/services/TokenService.ts","../src/services/TransactionService.ts","../src/services/UtilityService.ts","../src/vo/Context.ts","../src/vo/ValidationParameters.ts"],"sourcesContent":["/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseeSecretMode = Object.freeze({\r\n // @deprecated\r\n DISABLED: 'DISABLED',\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default LicenseeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicenseType = Object.freeze({\r\n FEATURE: 'FEATURE',\r\n TIMEVOLUME: 'TIMEVOLUME',\r\n FLOATING: 'FLOATING',\r\n QUANTITY: 'QUANTITY',\r\n});\r\n\r\nexport default LicenseType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationEvent = Object.freeze({\r\n LICENSEE_CREATED: 'LICENSEE_CREATED',\r\n LICENSE_CREATED: 'LICENSE_CREATED',\r\n WARNING_LEVEL_CHANGED: 'WARNING_LEVEL_CHANGED',\r\n PAYMENT_TRANSACTION_PROCESSED: 'PAYMENT_TRANSACTION_PROCESSED',\r\n});\r\n\r\nexport default NotificationEvent;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NotificationProtocol = Object.freeze({\r\n WEBHOOK: 'WEBHOOK',\r\n});\r\n\r\nexport default NotificationProtocol;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst SecurityMode = Object.freeze({\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n});\r\n\r\nexport default SecurityMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TimeVolumePeriod = Object.freeze({\r\n DAY: 'DAY',\r\n WEEK: 'WEEK',\r\n MONTH: 'MONTH',\r\n YEAR: 'YEAR',\r\n});\r\n\r\nexport default TimeVolumePeriod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TokenType = Object.freeze({\r\n DEFAULT: 'DEFAULT',\r\n SHOP: 'SHOP',\r\n APIKEY: 'APIKEY',\r\n ACTION: 'ACTION',\r\n});\r\n\r\nexport default TokenType;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionSource = Object.freeze({\r\n SHOP: 'SHOP',\r\n\r\n AUTO_LICENSE_CREATE: 'AUTO_LICENSE_CREATE',\r\n AUTO_LICENSE_UPDATE: 'AUTO_LICENSE_UPDATE',\r\n AUTO_LICENSE_DELETE: 'AUTO_LICENSE_DELETE',\r\n\r\n AUTO_LICENSEE_CREATE: 'AUTO_LICENSEE_CREATE',\r\n AUTO_LICENSEE_DELETE: 'AUTO_LICENSEE_DELETE',\r\n AUTO_LICENSEE_VALIDATE: 'AUTO_LICENSEE_VALIDATE',\r\n\r\n AUTO_LICENSETEMPLATE_DELETE: 'AUTO_LICENSETEMPLATE_DELETE',\r\n\r\n AUTO_PRODUCTMODULE_DELETE: 'AUTO_PRODUCTMODULE_DELETE',\r\n\r\n AUTO_PRODUCT_DELETE: 'AUTO_PRODUCT_DELETE',\r\n\r\n AUTO_LICENSES_TRANSFER: 'AUTO_LICENSES_TRANSFER',\r\n\r\n SUBSCRIPTION_UPDATE: 'SUBSCRIPTION_UPDATE',\r\n\r\n RECURRING_PAYMENT: 'RECURRING_PAYMENT',\r\n\r\n CANCEL_RECURRING_PAYMENT: 'CANCEL_RECURRING_PAYMENT',\r\n\r\n OBTAIN_BUNDLE: 'OBTAIN_BUNDLE',\r\n});\r\n\r\nexport default TransactionSource;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst TransactionStatus = Object.freeze({\r\n PENDING: 'PENDING',\r\n CLOSED: 'CLOSED',\r\n CANCELLED: 'CANCELLED',\r\n});\r\n\r\nexport default TransactionStatus;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport LicenseeSecretMode from '@/constants/LicenseeSecretMode';\r\nimport LicenseType from '@/constants/LicenseType';\r\nimport NotificationEvent from '@/constants/NotificationEvent';\r\nimport NotificationProtocol from '@/constants/NotificationProtocol';\r\nimport SecurityMode from '@/constants/SecurityMode';\r\nimport TimeVolumePeriod from '@/constants/TimeVolumePeriod';\r\nimport TokenType from '@/constants/TokenType';\r\nimport TransactionSource from '@/constants/TransactionSource';\r\nimport TransactionStatus from '@/constants/TransactionStatus';\r\n\r\nexport default {\r\n LicenseeSecretMode,\r\n LicenseType,\r\n NotificationEvent,\r\n NotificationProtocol,\r\n SecurityMode,\r\n TimeVolumePeriod,\r\n TokenType,\r\n TransactionSource,\r\n TransactionStatus,\r\n\r\n // @deprecated use SecurityMode.BASIC_AUTHENTICATION instead\r\n BASIC_AUTHENTICATION: 'BASIC_AUTH',\r\n\r\n // @deprecated use SecurityMode.APIKEY_IDENTIFICATION instead\r\n APIKEY_IDENTIFICATION: 'APIKEY',\r\n\r\n // @deprecated use SecurityMode.ANONYMOUS_IDENTIFICATION instead\r\n ANONYMOUS_IDENTIFICATION: 'ANONYMOUS',\r\n\r\n FILTER: 'filter',\r\n\r\n Product: {\r\n TYPE: 'Product',\r\n ENDPOINT_PATH: 'product',\r\n },\r\n\r\n ProductModule: {\r\n TYPE: 'ProductModule',\r\n ENDPOINT_PATH: 'productmodule',\r\n PRODUCT_MODULE_NUMBER: 'productModuleNumber',\r\n },\r\n\r\n Licensee: {\r\n TYPE: 'Licensee',\r\n ENDPOINT_PATH: 'licensee',\r\n ENDPOINT_PATH_VALIDATE: 'validate',\r\n ENDPOINT_PATH_TRANSFER: 'transfer',\r\n LICENSEE_NUMBER: 'licenseeNumber',\r\n },\r\n\r\n LicenseTemplate: {\r\n TYPE: 'LicenseTemplate',\r\n ENDPOINT_PATH: 'licensetemplate',\r\n\r\n // @deprecated use LicenseType directly instead\r\n LicenseType,\r\n },\r\n\r\n License: {\r\n TYPE: 'License',\r\n ENDPOINT_PATH: 'license',\r\n },\r\n\r\n Validation: {\r\n TYPE: 'ProductModuleValidation',\r\n },\r\n\r\n Token: {\r\n TYPE: 'Token',\r\n ENDPOINT_PATH: 'token',\r\n\r\n // @deprecated use TokenType directly instead\r\n Type: TokenType,\r\n },\r\n\r\n PaymentMethod: {\r\n TYPE: 'PaymentMethod',\r\n ENDPOINT_PATH: 'paymentmethod',\r\n },\r\n\r\n Bundle: {\r\n TYPE: 'Bundle',\r\n ENDPOINT_PATH: 'bundle',\r\n ENDPOINT_OBTAIN_PATH: 'obtain',\r\n },\r\n\r\n Notification: {\r\n TYPE: 'Notification',\r\n ENDPOINT_PATH: 'notification',\r\n\r\n // @deprecated use NotificationProtocol directly instead\r\n Protocol: NotificationProtocol,\r\n\r\n // @deprecated use NotificationEvent directly instead\r\n Event: NotificationEvent,\r\n },\r\n\r\n Transaction: {\r\n TYPE: 'Transaction',\r\n ENDPOINT_PATH: 'transaction',\r\n\r\n // @deprecated use TransactionStatus directly instead\r\n Status: TransactionStatus,\r\n },\r\n\r\n Utility: {\r\n ENDPOINT_PATH: 'utility',\r\n ENDPOINT_PATH_LICENSE_TYPES: 'licenseTypes',\r\n ENDPOINT_PATH_LICENSING_MODELS: 'licensingModels',\r\n ENDPOINT_PATH_COUNTRIES: 'countries',\r\n LICENSING_MODEL_TYPE: 'LicensingModelProperties',\r\n LICENSE_TYPE: 'LicenseType',\r\n COUNTRY_TYPE: 'Country',\r\n },\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst ApiKeyRole = Object.freeze({\r\n ROLE_APIKEY_LICENSEE: 'ROLE_APIKEY_LICENSEE',\r\n ROLE_APIKEY_ANALYTICS: 'ROLE_APIKEY_ANALYTICS',\r\n ROLE_APIKEY_OPERATION: 'ROLE_APIKEY_OPERATION',\r\n ROLE_APIKEY_MAINTENANCE: 'ROLE_APIKEY_MAINTENANCE',\r\n ROLE_APIKEY_ADMIN: 'ROLE_APIKEY_ADMIN',\r\n});\r\n\r\nexport default ApiKeyRole;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst LicensingModel = Object.freeze({\r\n TRY_AND_BUY: 'TryAndBuy',\r\n SUBSCRIPTION: 'Subscription',\r\n RENTAL: 'Rental',\r\n FLOATING: 'Floating',\r\n MULTI_FEATURE: 'MultiFeature',\r\n PAY_PER_USE: 'PayPerUse',\r\n PRICING_TABLE: 'PricingTable',\r\n QUOTA: 'Quota',\r\n NODE_LOCKED: 'NodeLocked',\r\n DISCOUNT: 'Discount',\r\n});\r\n\r\nexport default LicensingModel;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst NodeSecretMode = Object.freeze({\r\n PREDEFINED: 'PREDEFINED',\r\n CLIENT: 'CLIENT',\r\n});\r\n\r\nexport default NodeSecretMode;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst PaymentMethodEnum = Object.freeze({\r\n NULL: 'NULL',\r\n PAYPAL: 'PAYPAL',\r\n PAYPAL_SANDBOX: 'PAYPAL_SANDBOX',\r\n STRIPE: 'STRIPE',\r\n STRIPE_TESTING: 'STRIPE_TESTING',\r\n});\r\n\r\nexport default PaymentMethodEnum;\r\n","import { Item, List } from '@/types/api/response';\r\n\r\nconst cast = (value: string): unknown => {\r\n try {\r\n return JSON.parse(value);\r\n } catch (e) {\r\n return value;\r\n }\r\n};\r\n\r\nconst extractProperties = (properties?: { name: string; value: string }[]) => {\r\n const result: Record = {};\r\n properties?.forEach(({ name, value }) => {\r\n result[name] = cast(value);\r\n });\r\n return result;\r\n};\r\n\r\nconst extractLists = (lists?: List[]) => {\r\n const result: Record = {};\r\n\r\n lists?.forEach((list) => {\r\n const { name } = list;\r\n result[name] = result[name] || [];\r\n result[name].push(itemToObject(list));\r\n });\r\n return result;\r\n};\r\n\r\nconst itemToObject = >(item?: Item | List): T => {\r\n return item ? ({ ...extractProperties(item.property), ...extractLists(item.list) } as T) : ({} as T);\r\n};\r\n\r\nexport default itemToObject;\r\n","export const has = (obj: T, key: K): boolean => {\r\n return Object.hasOwn(obj, key);\r\n};\r\n\r\nexport const set = (obj: T, key: K, value: T[K]): void => {\r\n obj[key] = value;\r\n};\r\n\r\nexport const get = (obj: T, key: K, def?: D): T[K] | D => {\r\n return has(obj, key) ? obj[key] : (def as D);\r\n};\r\n\r\nexport default {\r\n has,\r\n set,\r\n get,\r\n};\r\n","/**\r\n * Converts an object into a map of type Record, where the value of each object property is converted\r\n * to a string.\r\n * If the property's value is `undefined`, it will be replaced with an empty string.\r\n * If the value is already a string, it will remain unchanged.\r\n * If the value is Date instance, it wll be replaced with an ISO format date string.\r\n * For complex types (objects, arrays, etc.), the value will be serialized into a JSON string.\r\n * If serialization fails, the value will be converted to a string using `String()`.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n * @param obj - The object to be converted into a map.\r\n * @param options\r\n * @returns A map (Record) with converted property values from the object.\r\n */\r\nexport default (obj: T, options: { ignore?: string[] } = {}): Record => {\r\n const map: Record = {};\r\n\r\n const { ignore = [] } = options;\r\n\r\n Object.entries(obj).forEach(([k, v]) => {\r\n // ignore keys\r\n if (ignore.includes(k)) {\r\n return;\r\n }\r\n\r\n if (typeof v === 'function') {\r\n // ignore functions\r\n return;\r\n } else if (v === undefined) {\r\n map[k] = ''; // if the value is `undefined`, replace it with an empty string\r\n } else if (typeof v === 'string') {\r\n map[k] = v; // If the value is already a string, leave it unchanged\r\n } else if (v instanceof Date) {\r\n // if the value is Date, convert it to ISO string\r\n map[k] = v.toISOString();\r\n } else if (typeof v !== 'object' || v === null) {\r\n // If it's not an object (or is null), convert it to string\r\n map[k] = String(v);\r\n } else {\r\n // Try to serialize the object or array into JSON\r\n try {\r\n map[k] = JSON.stringify(v);\r\n } catch {\r\n map[k] = String(v);\r\n }\r\n }\r\n });\r\n\r\n return map;\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type {\r\n Entity,\r\n EntityMethods,\r\n Proto,\r\n PropGetEventListener,\r\n PropSetEventListener,\r\n} from '@/types/entities/defineEntity';\r\n\r\n// utils\r\nimport { set, has, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst defineEntity = function

(\r\n props: T,\r\n methods: M,\r\n proto: P = {} as P,\r\n options?: { set?: PropSetEventListener; get?: PropGetEventListener },\r\n) {\r\n const listeners: { set: PropSetEventListener[]; get: PropGetEventListener[] } = {\r\n set: [],\r\n get: [],\r\n };\r\n\r\n if (options?.get) {\r\n listeners.get.push(options.get);\r\n }\r\n\r\n if (options?.set) {\r\n listeners.set.push(options.set);\r\n }\r\n\r\n const base: EntityMethods = {\r\n set(this: void, key, value): void {\r\n set(props, key, value);\r\n },\r\n\r\n get(this: void, key, def) {\r\n return get(props, key, def);\r\n },\r\n\r\n has(this: void, key) {\r\n return has(props, key);\r\n },\r\n\r\n // Aliases\r\n setProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n addProperty(key, value) {\r\n this.set(key, value);\r\n },\r\n\r\n getProperty(key, def) {\r\n return this.get(key, def);\r\n },\r\n\r\n hasProperty(key) {\r\n return this.has(key);\r\n },\r\n\r\n setProperties(properties) {\r\n Object.entries(properties).forEach(([k, v]) => {\r\n this.set(k as keyof T, v as T[keyof T]);\r\n });\r\n },\r\n\r\n serialize(this: void) {\r\n return serialize(props);\r\n },\r\n };\r\n\r\n return new Proxy(props, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(methods, prop)) {\r\n return methods[prop as keyof typeof methods];\r\n }\r\n\r\n if (Object.hasOwn(base, prop)) {\r\n return base[prop as keyof typeof base];\r\n }\r\n\r\n listeners.get.forEach((l) => {\r\n l(obj, prop, receiver);\r\n });\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n listeners.set.forEach((l) => {\r\n l(obj, prop, value, receiver);\r\n });\r\n\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return proto.prototype || null;\r\n },\r\n }) as Entity;\r\n};\r\n\r\nexport default defineEntity;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// types\r\nimport type { BundleProps, BundleMethods, BundleEntity } from '@/types/entities/Bundle';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * NetLicensing Bundle entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the bundle. Vendor can assign this number when creating a bundle or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the bundle is disabled.\r\n * @property boolean active\r\n *\r\n * Bundle name.\r\n * @property string name\r\n *\r\n * Price for the bundle. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the bundle price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * The bundle includes a set of templates, each identified by a unique template number.\r\n * @property string[] licenseTemplateNumbers\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each bundle. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Bundle = function (properties: BundleProps = {} as BundleProps): BundleEntity {\r\n const props: BundleProps = { ...properties };\r\n\r\n const methods: BundleMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string) {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setProductNumber(number: string) {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setLicenseTemplateNumbers(this: void, numbers: string[]): void {\r\n set(props, 'licenseTemplateNumbers', numbers);\r\n },\r\n\r\n addLicenseTemplateNumber(this: void, number: string): void {\r\n if (!props.licenseTemplateNumbers) {\r\n props.licenseTemplateNumbers = [];\r\n }\r\n\r\n props.licenseTemplateNumbers.push(number);\r\n },\r\n\r\n getLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'licenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n removeLicenseTemplateNumber(this: void, number: string): void {\r\n const { licenseTemplateNumbers: numbers = [] } = props;\r\n\r\n numbers.splice(numbers.indexOf(number), 1);\r\n props.licenseTemplateNumbers = numbers;\r\n },\r\n\r\n getStaleLicenseTemplateNumbers(this: void, def?: D): string[] | D {\r\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n const cast: Record = {};\r\n\r\n if (props.licenseTemplateNumbers) {\r\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\r\n }\r\n\r\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as BundleProps, methods, Bundle);\r\n};\r\n\r\nexport default Bundle;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Bundle from '@/entities/Bundle';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { BundleProps } from '@/types/entities/Bundle';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { licenseTemplateNumbers } = props;\r\n\r\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\r\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\r\n }\r\n\r\n return Bundle(props as BundleProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport type { CountryProps, CountryMethods, CountryEntity } from '@/types/entities/Country';\r\n\r\n// entity factory\r\nimport defineEntity from './defineEntity';\r\n\r\n/**\r\n * Country entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * @property code - Unique code of country.\r\n * @property name - Unique name of country\r\n * @property vatPercent - Country vat.\r\n * @property isEu - is country in EU.\r\n */\r\nconst Country = function (properties: CountryProps = {} as CountryProps): CountryEntity {\r\n const defaults: CountryProps = {\r\n code: '',\r\n name: '',\r\n vatPercent: 0,\r\n isEu: false,\r\n };\r\n\r\n const props: CountryProps = { ...defaults, ...properties };\r\n\r\n const methods: CountryMethods = {\r\n getCode(this: void): string {\r\n return props.code;\r\n },\r\n\r\n getName(this: void): string {\r\n return props.name;\r\n },\r\n\r\n getVatPercent(this: void): number {\r\n return props.vatPercent as number;\r\n },\r\n\r\n getIsEu(this: void): boolean {\r\n return props.isEu;\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, Country);\r\n};\r\n\r\nexport default Country;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport Country from '@/entities/Country';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { CountryProps } from '@/types/entities/Country';\r\n\r\nexport default (item?: Item) => Country(itemToObject(item));\r\n","/**\n * @author Labs64 \n * @license Apache-2.0\n * @link https://netlicensing.io\n * @copyright 2017 Labs64 NetLicensing\n */\n// types\nimport { LicenseMethods, LicenseProps, LicenseEntity } from '@/types/entities/License';\n\n// utils\nimport { set, get } from '@/utils/helpers';\nimport serialize from '@/utils/serialize';\n\n// entity factory\nimport defineEntity from './defineEntity';\n\n/**\n * License entity used internally by NetLicensing.\n *\n * Properties visible via NetLicensing API:\n *\n * Unique number (across all products/licensees of a vendor) that identifies the license. Vendor can\n * assign this number when creating a license or let NetLicensing generate one. Read-only after corresponding creation\n * transaction status is set to closed.\n * @property string number\n *\n * Name for the licensed item. Set from license template on creation, if not specified explicitly.\n * @property string name\n *\n * If set to false, the license is disabled. License can be re-enabled, but as long as it is disabled,\n * the license is excluded from the validation process.\n * @property boolean active\n *\n * price for the license. If >0, it must always be accompanied by the currency specification. Read-only,\n * set from license template on creation.\n * @property number price\n *\n * specifies currency for the license price. Check data types to discover which currencies are\n * supported. Read-only, set from license template on creation.\n * @property string currency\n *\n * If set to true, this license is not shown in NetLicensing Shop as purchased license. Set from license\n * template on creation, if not specified explicitly.\n * @property boolean hidden\n *\n * The unique identifier assigned to the licensee (the entity to whom the license is issued). This number is typically\n * associated with a specific customer or organization. It is used internally to reference the licensee and cannot be\n * changed after the license is created.\n * @property string licenseeNumber\n *\n * The unique identifier for the license template from which this license was created.\n * @property string licenseTemplateNumber\n *\n * A boolean flag indicating whether the license is actively being used. If true, it means the license is currently in\n * use. If false, the license is not currently assigned or in use.\n * @property boolean inUse\n *\n * This parameter is specific to TimeVolume licenses and indicates the total volume of time (e.g., in hours, days, etc.)\n * associated with the license. This value defines the amount of time the license covers, which may affect the usage\n * period and limits associated with the license.\n * @property number timeVolume\n *\n * Also, specific to TimeVolume licenses, this field defines the period of time for the timeVolume\n * (e.g., \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"). It provides the time unit for the timeVolume value, clarifying whether the\n * time is measured in days, weeks, or any other defined period.\n * @property string timeVolumePeriod\n *\n * For TimeVolume licenses, this field indicates the start date of the license’s validity period. This date marks when\n * the license becomes active and the associated time volume starts being consumed.\n * It can be represented as a string \"now\" or a Date object.\n * @property string|Date Date startDate\n *\n * Parent(Feature) license number\n * @property string parentfeature\n *\n * Arbitrary additional user properties of string type may be associated with each license. The name of user property\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, licenseeNumber,\n * licenseTemplateNumber.\n */\nconst License = function (properties: LicenseProps = {} as LicenseProps): LicenseEntity {\n const props: LicenseProps = { ...(properties as T) };\n\n const methods: LicenseMethods = {\n setActive(this: void, active: boolean): void {\n set(props, 'active', active);\n },\n\n getActive(this: void, def?: D): boolean | D {\n return get(props, 'active', def) as boolean | D;\n },\n\n setNumber(this: void, number: string): void {\n set(props, 'number', number);\n },\n\n getNumber(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n\n setName(this: void, name: string): void {\n set(props, 'name', name);\n },\n\n getName(this: void, def?: D): string | D {\n return get(props, 'name', def) as string | D;\n },\n\n setPrice(this: void, price: number): void {\n set(props, 'price', price);\n },\n\n getPrice(this: void, def?: D): number | D {\n return get(props, 'price', def) as number | D;\n },\n\n setCurrency(this: void, currency: string): void {\n set(props, 'currency', currency);\n },\n\n getCurrency(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setHidden(this: void, hidden: boolean): void {\n set(props, 'hidden', hidden);\n },\n\n getHidden(this: void, def?: D): boolean | D {\n return get(props, 'hidden', def) as boolean | D;\n },\n\n setLicenseeNumber(this: void, number: string): void {\n set(props, 'licenseeNumber', number);\n },\n\n getLicenseeNumber(this: void, def?: D): string | D {\n return get(props, 'licenseeNumber', def) as string | D;\n },\n\n setLicenseTemplateNumber(this: void, number: string): void {\n set(props, 'licenseTemplateNumber', number);\n },\n\n getLicenseTemplateNumber(this: void, def?: D): string | D {\n return get(props, 'licenseTemplateNumber', def) as string | D;\n },\n\n setProductModuleNumber(this: void, number: string): void {\n set(props, 'productModuleNumber', number);\n },\n\n getProductModuleNumber(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps, methods, License);\n};\n\nexport default License;\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport License from '@/entities/License';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseProps } from '@/types/entities/License';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { startDate } = props;\r\n\r\n if (startDate && typeof startDate === 'string') {\r\n props.startDate = startDate === 'now' ? startDate : new Date(startDate);\r\n }\r\n\r\n return License(props as LicenseProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseeMethods, LicenseeProps, LicenseeEntity } from '@/types/entities/Licensee';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Licensee entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the licensee. Vendor can assign this\r\n * number when creating a licensee or let NetLicensing generate one. Read-only after creation of the first license for\r\n * the licensee.\r\n * @property string number\r\n *\r\n * Licensee name.\r\n * @property string name\r\n *\r\n * If set to false, the licensee is disabled. Licensee can not obtain new licenses, and validation is\r\n * disabled (tbd).\r\n * @property boolean active\r\n *\r\n * Licensee Secret for licensee deprecated use Node-Locked Licensing Model instead\r\n * @property string licenseeSecret\r\n *\r\n * Mark licensee for transfer.\r\n * @property boolean markedForTransfer\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each licensee. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted, productNumber\r\n */\r\n\r\nconst Licensee = function (properties: LicenseeProps = {} as LicenseeProps): LicenseeEntity {\r\n const props: LicenseeProps = { ...properties };\r\n\r\n const methods: LicenseeMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProductNumber(this: void, number: string): void {\r\n set(props, 'productNumber', number);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setMarkedForTransfer(this: void, mark: boolean): void {\r\n set(props, 'markedForTransfer', mark);\r\n },\r\n\r\n getMarkedForTransfer(this: void, def?: D): boolean | D {\r\n return get(props, 'markedForTransfer', def) as boolean | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseeProps, methods, Licensee);\r\n};\r\n\r\nexport default Licensee;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Licensee from '@/entities/Licensee';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseeProps } from '@/types/entities/Licensee';\r\n\r\nexport default (item?: Item) => Licensee(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport {\r\n LicenseTemplateMethods,\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n} from '@/types/entities/LicenseTemplate';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * License template entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the license template. Vendor can\r\n * assign this number when creating a license template or let NetLicensing generate one.\r\n * Read-only after creation of the first license from this license template.\r\n * @property string number\r\n *\r\n * If set to false, the license template is disabled. Licensee can not obtain any new licenses off this\r\n * license template.\r\n * @property boolean active\r\n *\r\n * Name for the licensed item.\r\n * @property string name\r\n *\r\n * Type of licenses created from this license template. Supported types: \"FEATURE\", \"TIMEVOLUME\",\r\n * \"FLOATING\", \"QUANTITY\"\r\n * @property string licenseType\r\n *\r\n * Price for the license. If >0, it must always be accompanied by the currency specification.\r\n * @property number price\r\n *\r\n * Specifies currency for the license price. Check data types to discover which currencies are\r\n * supported.\r\n * @property string currency\r\n *\r\n * If set to true, every new licensee automatically gets one license out of this license template on\r\n * creation. Automatic licenses must have their price set to 0.\r\n * @property boolean automatic\r\n *\r\n * If set to true, this license template is not shown in NetLicensing Shop as offered for purchase.\r\n * @property boolean hidden\r\n *\r\n * If set to true, licenses from this license template are not visible to the end customer, but\r\n * participate in validation.\r\n * @property boolean hideLicenses\r\n *\r\n * If set to true, this license template defines grace period of validity granted after subscription expiration.\r\n * @property boolean gracePeriod\r\n *\r\n * Mandatory for 'TIMEVOLUME' license type.\r\n * @property number timeVolume\r\n *\r\n * Time volume period for 'TIMEVOLUME' license type. Supported types: \"DAY\", \"WEEK\", \"MONTH\", \"YEAR\"\r\n * @property string timeVolumePeriod\r\n *\r\n * Mandatory for 'FLOATING' license type.\r\n * @property number maxSessions\r\n *\r\n * Mandatory for 'QUANTITY' license type.\r\n * @property number quantity\r\n */\r\n\r\nconst LicenseTemplate = function (\r\n properties: LicenseTemplateProps = {} as LicenseTemplateProps,\r\n): LicenseTemplateEntity {\r\n const props: LicenseTemplateProps = { ...properties };\r\n\r\n const methods: LicenseTemplateMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicenseType(this: void, type: LicenseTypeValues): void {\r\n set(props, 'licenseType', type);\r\n },\r\n\r\n getLicenseType(this: void, def?: D): LicenseTypeValues | D {\r\n return get(props, 'licenseType', def) as LicenseTypeValues | D;\r\n },\r\n\r\n setPrice(this: void, price: number): void {\r\n set(props, 'price', price);\r\n },\r\n\r\n getPrice(this: void, def?: D): number | D {\r\n return get(props, 'price', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAutomatic(this: void, automatic: boolean): void {\r\n set(props, 'automatic', automatic);\r\n },\r\n\r\n getAutomatic(this: void, def?: D): boolean | D {\r\n return get(props, 'automatic', def) as boolean | D;\r\n },\r\n\r\n setHidden(this: void, hidden: boolean): void {\r\n set(props, 'hidden', hidden);\r\n },\r\n\r\n getHidden(this: void, def?: D): boolean | D {\r\n return get(props, 'hidden', def) as boolean | D;\r\n },\r\n\r\n setHideLicenses(this: void, hideLicenses: boolean): void {\r\n set(props, 'hideLicenses', hideLicenses);\r\n },\r\n\r\n getHideLicenses(this: void, def?: D): boolean | D {\r\n return get(props, 'hideLicenses', def) as boolean | D;\r\n },\r\n\r\n setProductModuleNumber(this: void, productModuleNumber: string): void {\r\n set(props, 'productModuleNumber', productModuleNumber);\r\n },\r\n\r\n getProductModuleNumber(this: void, def?: D): string | D {\r\n return get(props, 'productModuleNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as LicenseTemplateProps, methods, LicenseTemplate);\r\n};\r\n\r\nexport default LicenseTemplate;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport LicenseTemplate from '@/entities/LicenseTemplate';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { LicenseTemplateProps } from '@/types/entities/LicenseTemplate';\r\n\r\nexport default (item?: Item) => LicenseTemplate(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { NotificationEventValues } from '@/types/constants/NotificationEvent';\r\nimport { NotificationProtocolValues } from '@/types/constants/NotificationProtocol';\r\n\r\n// types\r\nimport { NotificationMethods, NotificationProps, NotificationEntity } from '@/types/entities/Notification';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Notification entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the notification. Vendor can assign this number when creating a notification or\r\n * let NetLicensing generate one.\r\n * @property string number\r\n *\r\n * If set to false, the notification is disabled. The notification will not be fired when the event triggered.\r\n * @property boolean active\r\n *\r\n * Notification name.\r\n * @property string name\r\n *\r\n * Notification type. Indicate the method of transmitting notification, ex: EMAIL, WEBHOOK.\r\n * @property float type\r\n *\r\n * Comma separated string of events that fire the notification when emitted.\r\n * @property string events\r\n *\r\n * Notification response payload.\r\n * @property string payload\r\n *\r\n * Notification response url. Optional. Uses only for WEBHOOK type notification.\r\n * @property string url\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each notification.\r\n * The name of user property must not be equal to any of the fixed property names listed above and must be none of id,\r\n * deleted.\r\n */\r\n\r\nconst Notification = function (\r\n properties: NotificationProps = {} as NotificationProps,\r\n): NotificationEntity {\r\n const props: NotificationProps = { ...properties };\r\n\r\n const methods: NotificationMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setProtocol(this: void, protocol: NotificationProtocolValues): void {\r\n set(props, 'protocol', protocol);\r\n },\r\n\r\n getProtocol(this: void, def?: D): NotificationProtocolValues | D {\r\n return get(props, 'protocol', def) as NotificationProtocolValues | D;\r\n },\r\n\r\n setEvents(this: void, events: NotificationEventValues[]): void {\r\n set(props, 'events', events);\r\n },\r\n\r\n getEvents(this: void, def?: D): NotificationEventValues[] | D {\r\n return get(props, 'events', def) as NotificationEventValues[] | D;\r\n },\r\n\r\n addEvent(event: NotificationEventValues): void {\r\n const events = this.getEvents([]) as NotificationEventValues[];\r\n events.push(event);\r\n\r\n this.setEvents(events);\r\n },\r\n\r\n setPayload(this: void, payload: string): void {\r\n set(props, 'payload', payload);\r\n },\r\n\r\n getPayload(this: void, def?: D): string | D {\r\n return get(props, 'payload', def) as string | D;\r\n },\r\n\r\n setEndpoint(this: void, endpoint: string): void {\r\n set(props, 'endpoint', endpoint);\r\n },\r\n\r\n getEndpoint(this: void, def?: D): string | D {\r\n return get(props, 'endpoint', def) as string | D;\r\n },\r\n\r\n serialize(): Record {\r\n const data = serialize(props);\r\n\r\n if (data.events) {\r\n data.events = this.getEvents([]).join(',');\r\n }\r\n\r\n return data;\r\n },\r\n };\r\n\r\n return defineEntity(props as NotificationProps, methods, Notification);\r\n};\r\n\r\nexport default Notification;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Notification from '@/entities/Notification';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { NotificationProps } from '@/types/entities/Notification';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { events } = props;\r\n\r\n if (events && typeof events === 'string') {\r\n props.events = events.split(',');\r\n }\r\n\r\n return Notification(props as NotificationProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodMethods, PaymentMethodProps, PaymentMethodEntity } from '@/types/entities/PaymentMethod';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\n/**\r\n * PaymentMethod entity used internally by NetLicensing.\r\n *\r\n * @property string number\r\n * @property boolean active\r\n * @property string paypal.subject\r\n */\r\nconst PaymentMethod = function (\r\n properties: PaymentMethodProps = {} as PaymentMethodProps,\r\n): PaymentMethodEntity {\r\n const props: PaymentMethodProps = { ...properties };\r\n\r\n const methods: PaymentMethodMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n };\r\n\r\n return defineEntity(props as PaymentMethodProps, methods, PaymentMethod);\r\n};\r\n\r\nexport default PaymentMethod;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport PaymentMethod from '@/entities/PaymentMethod';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { PaymentMethodProps } from '@/types/entities/PaymentMethod';\r\n\r\nexport default (item?: Item) => PaymentMethod(itemToObject(item));\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ProductProps, ProductEntity, ProductMethods } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * NetLicensing Product entity.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number that identifies the product. Vendor can assign this number when creating a product or\r\n * let NetLicensing generate one. Read-only after creation of the first licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product is disabled. No new licensees can be registered for the product,\r\n * existing licensees can not obtain new licenses.\r\n * @property boolean active\r\n *\r\n * Product name. Together with the version identifies the product for the end customer.\r\n * @property string name\r\n *\r\n * Product version. Convenience parameter, additional to the product name.\r\n * @property string version\r\n *\r\n * If set to 'true', non-existing licensees will be created at first validation attempt.\r\n * @property boolean licenseeAutoCreate\r\n *\r\n * Licensee secret mode for product.Supported types: \"DISABLED\", \"PREDEFINED\", \"CLIENT\"\r\n * @property boolean licenseeSecretMode\r\n *\r\n * Product description. Optional.\r\n * @property string description\r\n *\r\n * Licensing information. Optional.\r\n * @property string licensingInfo\r\n *\r\n * @property boolean inUse\r\n *\r\n * Arbitrary additional user properties of string type may be associated with each product. The name of user property\r\n * must not be equal to any of the fixed property names listed above and must be none of id, deleted.\r\n */\r\nconst Product = function (\r\n properties: ProductProps = {} as ProductProps,\r\n): ProductEntity {\r\n const props: ProductProps = { ...properties };\r\n\r\n const methods: ProductMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setVersion(this: void, version: string): void {\r\n set(props, 'version', version);\r\n },\r\n\r\n getVersion(this: void, def?: D): string | number | D {\r\n return get(props, 'version', def) as string | number | D;\r\n },\r\n\r\n setDescription(this: void, description: string): void {\r\n set(props, 'description', description);\r\n },\r\n\r\n getDescription(this: void, def?: D): string | D {\r\n return get(props, 'description', def) as string | D;\r\n },\r\n\r\n setLicensingInfo(this: void, licensingInfo: string): void {\r\n set(props, 'licensingInfo', licensingInfo);\r\n },\r\n\r\n getLicensingInfo(this: void, def?: D): string | D {\r\n return get(props, 'licensingInfo', def) as string | D;\r\n },\r\n\r\n setLicenseeAutoCreate(this: void, licenseeAutoCreate: boolean): void {\r\n set(props, 'licenseeAutoCreate', licenseeAutoCreate);\r\n },\r\n\r\n getLicenseeAutoCreate(this: void, def?: D): boolean | D {\r\n return get(props, 'licenseeAutoCreate', def) as boolean | D;\r\n },\r\n\r\n setDiscounts(this: void, discounts: ProductDiscountEntity[]): void {\r\n set(props, 'discounts', discounts);\r\n },\r\n\r\n getDiscounts(this: void, def?: D): ProductDiscountEntity[] | D {\r\n return get(props, 'discounts', def) as ProductDiscountEntity[] | D;\r\n },\r\n\r\n addDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts([] as ProductDiscountEntity[]);\r\n discounts.push(discount);\r\n\r\n this.setDiscounts(discounts);\r\n },\r\n\r\n removeDiscount(discount: ProductDiscountEntity): void {\r\n const discounts = this.getDiscounts();\r\n\r\n if (Array.isArray(discounts) && discounts.length > 0) {\r\n discounts.splice(discounts.indexOf(discount), 1);\r\n this.setDiscounts(discounts);\r\n }\r\n },\r\n\r\n setProductDiscounts(productDiscounts: ProductDiscountEntity[]): void {\r\n this.setDiscounts(productDiscounts);\r\n },\r\n\r\n getProductDiscounts(def?: D): ProductDiscountEntity[] | D {\r\n return this.getDiscounts(def);\r\n },\r\n\r\n serialize(): Record {\r\n const map: Record = serialize(props, { ignore: ['discounts', 'inUse'] });\r\n const discounts = this.getDiscounts();\r\n\r\n if (discounts) {\r\n map.discount = discounts.length > 0 ? discounts.map((discount) => discount.toString()) : '';\r\n }\r\n\r\n return map;\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductProps, methods, Product);\r\n};\r\n\r\nexport default Product;\r\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\r\n\r\nexport default class NlicError extends AxiosError {\r\n isNlicError = true;\r\n\r\n constructor(\r\n message?: string,\r\n code?: string,\r\n config?: InternalAxiosRequestConfig,\r\n request?: unknown,\r\n response?: AxiosResponse,\r\n stack?: string,\r\n ) {\r\n super(message, code, config, request, response);\r\n this.name = 'NlicError';\r\n\r\n if (stack) {\r\n this.stack = stack;\r\n }\r\n\r\n Object.setPrototypeOf(this, NlicError.prototype);\r\n }\r\n}\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport { ProductDiscountMethods, ProductDiscountProps, ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\n\r\nconst ProductDiscount = function (\r\n properties: ProductDiscountProps = {} as ProductDiscountProps,\r\n): ProductDiscountEntity {\r\n const props: ProductDiscountProps = { ...properties };\r\n\r\n if (props.amountFix && props.amountPercent) {\r\n throw new NlicError('Properties \"amountFix\" and \"amountPercent\" cannot be used at the same time');\r\n }\r\n\r\n const methods: ProductDiscountMethods = {\r\n setTotalPrice(this: void, totalPrice: number): void {\r\n set(props, 'totalPrice', totalPrice);\r\n },\r\n\r\n getTotalPrice(this: void, def?: D): number | D {\r\n return get(props, 'totalPrice', def) as number | D;\r\n },\r\n\r\n setCurrency(currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setAmountFix(this: void, amountFix: number): void {\r\n set(props, 'amountFix', amountFix);\r\n },\r\n\r\n getAmountFix(this: void, def?: D): number | D {\r\n return get(props, 'amountFix', def) as number | D;\r\n },\r\n\r\n setAmountPercent(this: void, amountPercent: number): void {\r\n set(props, 'amountPercent', amountPercent);\r\n },\r\n\r\n getAmountPercent(this: void, def?: D): number | D {\r\n return get(props, 'amountPercent', def) as number | D;\r\n },\r\n\r\n toString() {\r\n const total = this.getTotalPrice();\r\n const currency = this.getCurrency();\r\n const amount = this.getAmountPercent() ? `${this.getAmountPercent()}%` : this.getAmountFix();\r\n\r\n return total && currency && amount ? `${total};${currency};${amount}` : '';\r\n },\r\n };\r\n\r\n return defineEntity(props, methods, ProductDiscount, {\r\n set: (obj, prop) => {\r\n if (prop === 'amountFix') {\r\n delete obj.amountPercent;\r\n }\r\n\r\n if (prop === 'amountPercent') {\r\n delete obj.amountFix;\r\n }\r\n },\r\n });\r\n};\r\n\r\nexport default ProductDiscount;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Product from '@/entities/Product';\r\nimport ProductDiscount from '@/entities/ProductDiscount';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductProps } from '@/types/entities/Product';\r\nimport { ProductDiscountEntity } from '@/types/entities/ProductDiscount';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const discounts: ProductDiscountEntity[] | undefined = props.discount as ProductDiscountEntity[] | undefined;\r\n delete props.discount;\r\n\r\n if (discounts) {\r\n props.discounts = discounts.map((d) => ProductDiscount(d));\r\n }\r\n\r\n return Product(props as ProductProps);\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\n\r\n// types\r\nimport {\r\n ProductModuleEntity,\r\n ProductModuleMethods,\r\n ProductModuleProps,\r\n} from '@/types/entities/ProductModule';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Product module entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the product module. Vendor can assign\r\n * this number when creating a product module or let NetLicensing generate one. Read-only after creation of the first\r\n * licensee for the product.\r\n * @property string number\r\n *\r\n * If set to false, the product module is disabled. Licensees can not obtain any new licenses for this\r\n * product module.\r\n * @property boolean active\r\n *\r\n * Product module name that is visible to the end customers in NetLicensing Shop.\r\n * @property string name\r\n *\r\n * Licensing model applied to this product module. Defines what license templates can be\r\n * configured for the product module and how licenses for this product module are processed during validation.\r\n * @property string licensingModel\r\n *\r\n * Maximum checkout validity (days). Mandatory for 'Floating' licensing model.\r\n * @property number maxCheckoutValidity\r\n *\r\n * Remaining time volume for yellow level. Mandatory for 'Rental' licensing model.\r\n * @property number yellowThreshold\r\n *\r\n * Remaining time volume for red level. Mandatory for 'Rental' licensing model.\r\n * @property number redThreshold\r\n */\r\n\r\nconst ProductModule = function (\r\n properties: ProductModuleProps = {} as ProductModuleProps,\r\n): ProductModuleEntity {\r\n const props: ProductModuleProps = { ...properties };\r\n\r\n const methods: ProductModuleMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setName(this: void, name: string): void {\r\n set(props, 'name', name);\r\n },\r\n\r\n getName(this: void, def?: D): string | D {\r\n return get(props, 'name', def) as string | D;\r\n },\r\n\r\n setLicensingModel(licensingModel: LicensingModelValues): void {\r\n set(props, 'licensingModel', licensingModel);\r\n },\r\n\r\n getLicensingModel(this: void, def?: D): LicensingModelValues | D {\r\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as ProductModuleProps, methods, ProductModule);\r\n};\r\n\r\nexport default ProductModule;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport ProductModule from '@/entities/ProductModule';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { ProductModuleProps } from '@/types/entities/ProductModule';\r\n\r\nexport default (item?: Item) => ProductModule(itemToObject(item));\r\n","/**\r\n * Token\r\n *\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n *\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { ApiKeyRoleValues } from '@/types/constants/ApiKeyRole';\r\nimport { TokenTypeValues } from '@/types/constants/TokenType';\r\nimport { TokenProps, TokenEntity, TokenMethods } from '@/types/entities/Token';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\nconst Token = function (properties: TokenProps = {} as TokenProps): TokenEntity {\r\n const props: TokenProps = { ...properties };\r\n\r\n const methods: TokenMethods = {\r\n setActive(this: void, active: boolean): void {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setExpirationTime(this: void, expirationTime: Date): void {\r\n set(props, 'expirationTime', expirationTime);\r\n },\r\n\r\n getExpirationTime(this: void, def?: D): Date | D {\r\n return get(props, 'expirationTime', def) as Date | D;\r\n },\r\n\r\n setTokenType(this: void, tokenType: TokenTypeValues): void {\r\n set(props, 'tokenType', tokenType);\r\n },\r\n\r\n getTokenType(this: void, def?: D): TokenTypeValues | D {\r\n return get(props, 'tokenType', def) as TokenTypeValues | D;\r\n },\r\n\r\n setLicenseeNumber(this: void, licenseeNumber: string): void {\r\n set(props, 'licenseeNumber', licenseeNumber);\r\n },\r\n\r\n getLicenseeNumber(this: void, def?: D): string | D {\r\n return get(props, 'licenseeNumber', def) as string | D;\r\n },\r\n\r\n setAction(this: void, action: string): void {\r\n set(props, 'action', action);\r\n },\r\n\r\n getAction(this: void, def?: D): string | D {\r\n return get(props, 'action', def) as string | D;\r\n },\r\n\r\n setApiKeyRole(this: void, apiKeyRole: ApiKeyRoleValues): void {\r\n set(props, 'apiKeyRole', apiKeyRole);\r\n },\r\n\r\n getApiKeyRole(this: void, def?: D): ApiKeyRoleValues | D {\r\n return get(props, 'apiKeyRole', def) as ApiKeyRoleValues | D;\r\n },\r\n\r\n setBundleNumber(this: void, bundleNumber: string): void {\r\n set(props, 'bundleNumber', bundleNumber);\r\n },\r\n\r\n getBundleNumber(this: void, def?: D): string | D {\r\n return get(props, 'bundleNumber', def) as string | D;\r\n },\r\n\r\n setBundlePrice(this: void, bundlePrice: number): void {\r\n set(props, 'bundlePrice', bundlePrice);\r\n },\r\n\r\n getBundlePrice(this: void, def?: D): number | D {\r\n return get(props, 'bundlePrice', def) as number | D;\r\n },\r\n\r\n setProductNumber(this: void, productNumber: string): void {\r\n set(props, 'productNumber', productNumber);\r\n },\r\n\r\n getProductNumber(this: void, def?: D): string | D {\r\n return get(props, 'productNumber', def) as string | D;\r\n },\r\n\r\n setPredefinedShoppingItem(this: void, predefinedShoppingItem: string): void {\r\n set(props, 'predefinedShoppingItem', predefinedShoppingItem);\r\n },\r\n\r\n getPredefinedShoppingItem(this: void, def?: D): string | D {\r\n return get(props, 'predefinedShoppingItem', def) as string | D;\r\n },\r\n\r\n setSuccessURL(this: void, successURL: string): void {\r\n set(props, 'successURL', successURL);\r\n },\r\n\r\n getSuccessURL(this: void, def?: D): string | D {\r\n return get(props, 'successURL', def) as string | D;\r\n },\r\n\r\n setSuccessURLTitle(this: void, successURLTitle: string): void {\r\n set(props, 'successURLTitle', successURLTitle);\r\n },\r\n\r\n getSuccessURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'successURLTitle', def) as string | D;\r\n },\r\n\r\n setCancelURL(this: void, cancelURL: string): void {\r\n set(props, 'cancelURL', cancelURL);\r\n },\r\n\r\n getCancelURL(this: void, def?: D): string | D {\r\n return get(props, 'cancelURL', def) as string | D;\r\n },\r\n\r\n setCancelURLTitle(this: void, cancelURLTitle: string): void {\r\n set(props, 'cancelURLTitle', cancelURLTitle);\r\n },\r\n\r\n getCancelURLTitle(this: void, def?: D): string | D {\r\n return get(props, 'cancelURLTitle', def) as string | D;\r\n },\r\n\r\n getShopURL(this: void, def?: D): string | D {\r\n return get(props, 'shopURL', def) as string | D;\r\n },\r\n\r\n serialize(this: void): Record {\r\n return serialize(props, { ignore: ['shopURL'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TokenProps, methods, Token);\r\n};\r\n\r\nexport default Token;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\nimport Token from '@/entities/Token';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TokenProps } from '@/types/entities/Token';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { expirationTime } = props;\r\n\r\n if (expirationTime && typeof expirationTime === 'string') {\r\n props.expirationTime = new Date(expirationTime);\r\n }\r\n\r\n return Token(props as TokenProps);\r\n};\r\n","// types\r\nimport type { LicenseEntity } from '@/types/entities/License';\r\nimport type { LicenseTransactionJoinEntity as ILicenseTransactionJoin } from '@/types/entities/LicenseTransactionJoin';\r\nimport type { TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nclass LicenseTransactionJoin implements ILicenseTransactionJoin {\r\n transaction: TransactionEntity;\r\n license: LicenseEntity;\r\n\r\n constructor(transaction: TransactionEntity, license: LicenseEntity) {\r\n this.transaction = transaction;\r\n this.license = license;\r\n }\r\n\r\n setTransaction(transaction: TransactionEntity): void {\r\n this.transaction = transaction;\r\n }\r\n\r\n getTransaction(): TransactionEntity {\r\n return this.transaction;\r\n }\r\n\r\n setLicense(license: LicenseEntity): void {\r\n this.license = license;\r\n }\r\n\r\n getLicense(): LicenseEntity {\r\n return this.license;\r\n }\r\n}\r\n\r\nexport default (transaction: TransactionEntity, license: LicenseEntity) =>\r\n new LicenseTransactionJoin(transaction, license);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// entity factory\r\nimport defineEntity from '@/entities/defineEntity';\r\n\r\n// types\r\nimport { PaymentMethodValues } from '@/types/constants/PaymentMethodEnum';\r\nimport { TransactionSourceValues } from '@/types/constants/TransactionSource';\r\nimport { TransactionStatusValues } from '@/types/constants/TransactionStatus';\r\nimport { LicenseTransactionJoinEntity } from '@/types/entities/LicenseTransactionJoin';\r\nimport { TransactionMethods, TransactionProps, TransactionEntity } from '@/types/entities/Transaction';\r\n\r\n// utils\r\nimport { set, get } from '@/utils/helpers';\r\nimport serialize from '@/utils/serialize';\r\n\r\n/**\r\n * Transaction entity used internally by NetLicensing.\r\n *\r\n * Properties visible via NetLicensing API:\r\n *\r\n * Unique number (across all products of a vendor) that identifies the transaction. This number is\r\n * always generated by NetLicensing.\r\n * @property string number\r\n *\r\n * always true for transactions\r\n * @property boolean active\r\n *\r\n * Status of transaction. \"CANCELLED\", \"CLOSED\", \"PENDING\".\r\n * @property string status\r\n *\r\n * \"SHOP\". AUTO transaction for internal use only.\r\n * @property string source\r\n *\r\n * grand total for SHOP transaction (see source).\r\n * @property number grandTotal\r\n *\r\n * discount for SHOP transaction (see source).\r\n * @property number discount\r\n *\r\n * specifies currency for money fields (grandTotal and discount). Check data types to discover which\r\n * @property string currency\r\n *\r\n * Date created. Optional.\r\n * @property string dateCreated\r\n *\r\n * Date closed. Optional.\r\n * @property string dateClosed\r\n */\r\n\r\nconst Transaction = function (\r\n properties: TransactionProps = {} as TransactionProps,\r\n): TransactionEntity {\r\n const props: TransactionProps = { ...properties };\r\n\r\n const methods: TransactionMethods = {\r\n setActive(this: void, active: boolean) {\r\n set(props, 'active', active);\r\n },\r\n\r\n getActive(this: void, def?: D): boolean | D {\r\n return get(props, 'active', def) as boolean | D;\r\n },\r\n\r\n setNumber(this: void, number: string): void {\r\n set(props, 'number', number);\r\n },\r\n\r\n getNumber(this: void, def?: D): string | D {\r\n return get(props, 'number', def) as string | D;\r\n },\r\n\r\n setStatus(this: void, status: TransactionStatusValues): void {\r\n set(props, 'status', status);\r\n },\r\n\r\n getStatus(this: void, def?: D): TransactionStatusValues | D {\r\n return get(props, 'status', def) as TransactionStatusValues | D;\r\n },\r\n\r\n setSource(this: void, source: TransactionSourceValues): void {\r\n set(props, 'source', source);\r\n },\r\n getSource(this: void, def?: D): TransactionSourceValues | D {\r\n return get(props, 'source', def) as TransactionSourceValues | D;\r\n },\r\n setGrandTotal(this: void, grandTotal: number): void {\r\n set(props, 'grandTotal', grandTotal);\r\n },\r\n getGrandTotal(this: void, def?: D): number | D {\r\n return get(props, 'grandTotal', def) as number | D;\r\n },\r\n\r\n setDiscount(this: void, discount: number): void {\r\n set(props, 'discount', discount);\r\n },\r\n\r\n getDiscount(this: void, def?: D): number | D {\r\n return get(props, 'discount', def) as number | D;\r\n },\r\n\r\n setCurrency(this: void, currency: string): void {\r\n set(props, 'currency', currency);\r\n },\r\n\r\n getCurrency(this: void, def?: D): string | D {\r\n return get(props, 'currency', def) as string | D;\r\n },\r\n\r\n setDateCreated(this: void, dateCreated: Date): void {\r\n set(props, 'dateCreated', dateCreated);\r\n },\r\n\r\n getDateCreated(this: void, def?: D): Date | D {\r\n return get(props, 'dateCreated', def) as Date | D;\r\n },\r\n\r\n setDateClosed(this: void, dateCreated: Date): void {\r\n set(props, 'dateClosed', dateCreated);\r\n },\r\n\r\n getDateClosed(this: void, def?: D): Date | D {\r\n return get(props, 'dateClosed', def) as Date | D;\r\n },\r\n\r\n setPaymentMethod(this: void, paymentMethod: PaymentMethodValues): void {\r\n set(props, 'paymentMethod', paymentMethod);\r\n },\r\n\r\n getPaymentMethod(this: void, def?: D): PaymentMethodValues | D {\r\n return get(props, 'paymentMethod', def) as PaymentMethodValues | D;\r\n },\r\n\r\n setLicenseTransactionJoins(this: void, joins: LicenseTransactionJoinEntity[]): void {\r\n set(props, 'licenseTransactionJoins', joins);\r\n },\r\n\r\n getLicenseTransactionJoins(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\r\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\r\n },\r\n\r\n serialize(this: void) {\r\n const clone: Record = {...props};\r\n\r\n clone.datecreated = props.dateCreated;\r\n clone.dateclosed = props.dateClosed\r\n\r\n delete clone.dateCreated;\r\n delete clone.dateClosed;\r\n\r\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\r\n },\r\n };\r\n\r\n return defineEntity(props as TransactionProps, methods, Transaction);\r\n};\r\n\r\nexport default Transaction;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// entities\r\nimport License from '@/entities/License';\r\nimport LicenseTransactionJoin from '@/entities/LicenseTransactionJoin';\r\nimport Transaction from '@/entities/Transaction';\r\n\r\n// types\r\nimport { Item } from '@/types/api/response';\r\nimport { TransactionProps } from '@/types/entities/Transaction';\r\n\r\nexport default (item?: Item) => {\r\n const props = itemToObject>(item);\r\n\r\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\r\n\r\n if (dateCreated && typeof dateCreated === 'string') {\r\n props.dateCreated = new Date(dateCreated);\r\n delete props.datecreated;\r\n }\r\n\r\n if (dateClosed && typeof dateClosed === 'string') {\r\n props.dateClosed = new Date(dateClosed);\r\n delete props.dateclosed;\r\n }\r\n\r\n const licenseTransactionJoins: { licenseNumber: string; transactionNumber: string }[] | undefined =\r\n props.licenseTransactionJoin as { licenseNumber: string; transactionNumber: string }[];\r\n\r\n delete props.licenseTransactionJoin;\r\n\r\n if (licenseTransactionJoins) {\r\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\r\n const transaction = Transaction({ number: transactionNumber });\r\n const license = License({ number: licenseNumber });\r\n\r\n return LicenseTransactionJoin(transaction, license);\r\n });\r\n }\r\n\r\n return Transaction(props as TransactionProps);\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\nimport { Info } from '@/types/api/response';\r\n\r\nlet axiosInstance: AxiosInstance = axios.create();\r\nlet lastResponse: AxiosResponse | null = null;\r\nlet info: Info[] = [];\r\n\r\nexport const setAxiosInstance = (instance: AxiosInstance): void => {\r\n axiosInstance = instance;\r\n};\r\n\r\nexport const getAxiosInstance = (): AxiosInstance => axiosInstance;\r\n\r\nexport const setLastResponse = (response: AxiosResponse | null): void => {\r\n lastResponse = response;\r\n};\r\n\r\nexport const getLastResponse = (): AxiosResponse | null => lastResponse;\r\n\r\nexport const setInfo = (infos: Info[]): void => {\r\n info = infos;\r\n};\r\n\r\nexport const getInfo = (): Info[] => info;\r\n","{\r\n \"name\": \"netlicensing-client\",\r\n \"version\": \"2.0.0\",\r\n \"description\": \"JavaScript Wrapper for Labs64 NetLicensing RESTful API\",\r\n \"keywords\": [\r\n \"labs64\",\r\n \"netlicensing\",\r\n \"licensing\",\r\n \"licensing-as-a-service\",\r\n \"license\",\r\n \"license-management\",\r\n \"software-license\",\r\n \"client\",\r\n \"restful\",\r\n \"restful-api\",\r\n \"javascript\",\r\n \"wrapper\",\r\n \"api\",\r\n \"client\"\r\n ],\r\n \"license\": \"Apache-2.0\",\r\n \"author\": \"Labs64 GmbH\",\r\n \"homepage\": \"https://netlicensing.io\",\r\n \"repository\": {\r\n \"type\": \"git\",\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript\"\r\n },\r\n \"bugs\": {\r\n \"url\": \"https://github.com/Labs64/NetLicensingClient-javascript/issues\"\r\n },\r\n \"contributors\": [\r\n {\r\n \"name\": \"Ready Brown\",\r\n \"email\": \"ready.brown@hotmail.de\",\r\n \"url\": \"https://github.com/r-brown\"\r\n },\r\n {\r\n \"name\": \"Viacheslav Rudkovskiy\",\r\n \"email\": \"viachaslau.rudkovski@labs64.de\",\r\n \"url\": \"https://github.com/v-rudkovskiy\"\r\n },\r\n {\r\n \"name\": \"Andrei Yushkevich\",\r\n \"email\": \"yushkevich@me.com\",\r\n \"url\": \"https://github.com/yushkevich\"\r\n }\r\n ],\r\n \"main\": \"dist/index.cjs\",\r\n \"module\": \"dist/index.mjs\",\r\n \"types\": \"dist/index.d.ts\",\r\n \"exports\": {\r\n \".\": {\r\n \"types\": \"./dist/index.d.ts\",\r\n \"import\": \"./dist/index.mjs\",\r\n \"require\": \"./dist/index.cjs\"\r\n }\r\n },\r\n \"files\": [\r\n \"dist\"\r\n ],\r\n \"scripts\": {\r\n \"build\": \"tsup\",\r\n \"release\": \"npm run lint:typecheck && npm run test && npm run build\",\r\n \"dev\": \"tsup --watch\",\r\n \"test\": \"vitest run\",\r\n \"test:dev\": \"vitest watch\",\r\n \"lint\": \"eslint --ext .js,.mjs,.ts src\",\r\n \"typecheck\": \"tsc --noEmit\",\r\n \"lint:typecheck\": \"npm run lint && npm run typecheck\"\r\n },\r\n \"peerDependencies\": {\r\n \"axios\": \"^1.9.0\"\r\n },\r\n \"dependencies\": {},\r\n \"devDependencies\": {\r\n \"@eslint/js\": \"^9.24.0\",\r\n \"@types/node\": \"^22.14.0\",\r\n \"@typescript-eslint/eslint-plugin\": \"^8.29.1\",\r\n \"@typescript-eslint/parser\": \"^8.29.1\",\r\n \"@vitest/eslint-plugin\": \"^1.1.43\",\r\n \"axios\": \"^1.13.0\",\r\n \"eslint\": \"^9.24.0\",\r\n \"eslint-plugin-import\": \"^2.31.0\",\r\n \"prettier\": \"3.5.3\",\r\n \"tsup\": \"^8.4.0\",\r\n \"typescript\": \"^5.8.3\",\r\n \"typescript-eslint\": \"^8.29.1\",\r\n \"vitest\": \"^3.1.1\"\r\n },\r\n \"engines\": {\r\n \"node\": \">= 16.9.0\",\r\n \"npm\": \">= 8.0.0\"\r\n },\r\n \"browserslist\": [\r\n \"> 1%\",\r\n \"last 2 versions\",\r\n \"not ie <= 10\"\r\n ]\r\n}\r\n","export default >(data: T): string => {\r\n const query: string[] = [];\r\n\r\n const build = (obj: unknown, keyPrefix?: string): void => {\r\n if (obj === null || obj === undefined) {\r\n return;\r\n }\r\n\r\n if (Array.isArray(obj)) {\r\n obj.forEach((item) => {\r\n build(item, keyPrefix ? `${keyPrefix}` : '');\r\n });\r\n\r\n return;\r\n }\r\n\r\n if (obj instanceof Date) {\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj.toISOString())}`);\r\n return;\r\n }\r\n\r\n if (typeof obj === 'object') {\r\n Object.keys(obj).forEach((key) => {\r\n const value = obj[key as keyof typeof obj];\r\n build(value, keyPrefix ? `${keyPrefix}[${encodeURIComponent(key)}]` : encodeURIComponent(key));\r\n });\r\n\r\n return;\r\n }\r\n\r\n query.push(`${keyPrefix}=${encodeURIComponent(obj as string)}`);\r\n };\r\n\r\n build(data);\r\n\r\n return query.join('&');\r\n};\r\n","import { AxiosRequestConfig, Method, AxiosRequestHeaders, AxiosResponse, AxiosError, AxiosInstance } from 'axios';\r\n\r\n// constants\r\nimport SecurityMode from '@/constants/SecurityMode';\r\n\r\n// errors\r\nimport NlicError from '@/errors/NlicError';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\n// package.json\r\nimport pkg from '../../../package.json';\r\n\r\n// service\r\nimport { getAxiosInstance, setLastResponse, setInfo } from './instance';\r\nimport toQueryString from './toQueryString';\r\n\r\nexport default async (\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => {\r\n const headers: Record = {\r\n Accept: 'application/json',\r\n 'X-Requested-With': 'XMLHttpRequest',\r\n };\r\n\r\n // only node.js has a process variable that is of [[Class]] process\r\n if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {\r\n headers['User-agent'] = `NetLicensing/Javascript ${pkg.version}/node&${process.version}`;\r\n }\r\n\r\n const req: AxiosRequestConfig = {\r\n method,\r\n headers,\r\n url: encodeURI(`${context.getBaseUrl()}/${endpoint}`),\r\n responseType: 'json',\r\n transformRequest: (d: unknown, h: AxiosRequestHeaders) => {\r\n if (h['Content-Type'] === 'application/x-www-form-urlencoded') {\r\n return toQueryString(d as Record);\r\n }\r\n\r\n if (!h['NetLicensing-Origin']) {\r\n h['NetLicensing-Origin'] = `NetLicensing/Javascript ${pkg.version}`;\r\n }\r\n\r\n return d;\r\n },\r\n };\r\n\r\n if (['put', 'post', 'patch'].indexOf(method.toLowerCase()) >= 0) {\r\n if (req.method === 'post') {\r\n headers['Content-Type'] = 'application/x-www-form-urlencoded';\r\n }\r\n req.data = data;\r\n } else {\r\n req.params = data;\r\n }\r\n\r\n switch (context.getSecurityMode()) {\r\n // Basic Auth\r\n case SecurityMode.BASIC_AUTHENTICATION:\r\n {\r\n if (!context.getUsername()) {\r\n throw new NlicError('Missing parameter \"username\"');\r\n }\r\n\r\n if (!context.getPassword()) {\r\n throw new NlicError('Missing parameter \"password\"');\r\n }\r\n\r\n req.auth = {\r\n username: context.getUsername(),\r\n password: context.getPassword(),\r\n };\r\n }\r\n break;\r\n // ApiKey Auth\r\n case SecurityMode.APIKEY_IDENTIFICATION:\r\n if (!context.getApiKey()) {\r\n throw new NlicError('Missing parameter \"apiKey\"');\r\n }\r\n\r\n headers.Authorization = `Basic ${btoa(`apiKey:${context.getApiKey()}`)}`;\r\n break;\r\n // without authorization\r\n case SecurityMode.ANONYMOUS_IDENTIFICATION:\r\n break;\r\n default:\r\n throw new NlicError('Unknown security mode');\r\n }\r\n\r\n const instance: AxiosInstance = config?.axiosInstance || getAxiosInstance();\r\n\r\n try {\r\n const response: AxiosResponse = await instance(req);\r\n const info = response.data.infos?.info || [];\r\n\r\n setLastResponse(response);\r\n setInfo(info);\r\n\r\n if (config?.onResponse) {\r\n config.onResponse(response);\r\n }\r\n\r\n if (info.length > 0) {\r\n if (config?.onInfo) {\r\n config.onInfo(info);\r\n }\r\n\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n throw new NlicError(eInfo.value, eInfo.id, response.config, response.request, response);\r\n }\r\n }\r\n\r\n return response;\r\n } catch (e) {\r\n const error = e as AxiosError;\r\n\r\n const response = error.response;\r\n const info = (response?.data as NlicResponse)?.infos?.info || [];\r\n\r\n setLastResponse(response || null);\r\n setInfo(info);\r\n\r\n if ((e as AxiosError).isAxiosError) {\r\n let message = (e as AxiosError).message;\r\n\r\n if (response?.data && info.length > 0) {\r\n const eInfo = info.find(({ type }) => type === 'ERROR');\r\n\r\n if (eInfo) {\r\n message = eInfo.value;\r\n }\r\n }\r\n\r\n throw new NlicError(\r\n message,\r\n error.code,\r\n error.config,\r\n error.request,\r\n error.response as AxiosResponse,\r\n );\r\n }\r\n\r\n throw e;\r\n }\r\n};\r\n","import type { AxiosResponse } from 'axios';\r\n\r\n// types\r\nimport type { NlicResponse } from '@/types/api/response';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\n\r\n// service\r\nimport request from './request';\r\n\r\nexport const get = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'get', endpoint, data, config);\r\n\r\nexport const post = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'post', endpoint, data, config);\r\n\r\nexport const del = (\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n): Promise> => request(context, 'delete', endpoint, data, config);\r\n","import { AxiosInstance, AxiosResponse, Method } from 'axios';\r\n\r\n// service\r\nimport { setAxiosInstance, getAxiosInstance, getLastResponse, getInfo } from '@/services/Service/instance';\r\nimport { get, post, del } from '@/services/Service/methods';\r\nimport request from '@/services/Service/request';\r\nimport toQueryString from '@/services/Service/toQueryString';\r\n\r\n// types\r\nimport { Info, NlicResponse } from '@/types/api/response';\r\nimport { RequestConfig, IService } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\n\r\nexport { get, post, del, request, toQueryString };\r\n\r\nconst service: IService = {\r\n setAxiosInstance(this: void, instance: AxiosInstance) {\r\n setAxiosInstance(instance);\r\n },\r\n\r\n getAxiosInstance(this: void): AxiosInstance {\r\n return getAxiosInstance();\r\n },\r\n\r\n getLastHttpRequestInfo(this: void): AxiosResponse | null {\r\n return getLastResponse();\r\n },\r\n\r\n getInfo(this: void): Info[] {\r\n return getInfo();\r\n },\r\n\r\n get(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return get(context, endpoint, data, config);\r\n },\r\n\r\n post(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return post(context, endpoint, data, config);\r\n },\r\n\r\n delete(\r\n this: void,\r\n context: ContextInstance,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return del(context, endpoint, data, config);\r\n },\r\n\r\n request(\r\n this: void,\r\n context: ContextInstance,\r\n method: Method,\r\n endpoint: string,\r\n data?: Record,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n return request(context, method, endpoint, data, config);\r\n },\r\n\r\n toQueryString>(this: void, data: T): string {\r\n return toQueryString(data);\r\n },\r\n};\r\n\r\nexport default service;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nconst FILTER_DELIMITER = ';';\r\nconst FILTER_PAIR_DELIMITER = '=';\r\n\r\nexport const encode = (filter: Record): string => {\r\n return Object.keys(filter)\r\n .map((key) => `${key}${FILTER_PAIR_DELIMITER}${String(filter[key])}`)\r\n .join(FILTER_DELIMITER);\r\n};\r\n\r\nexport const decode = (filter: string): Record => {\r\n const result: Record = {};\r\n\r\n filter.split(FILTER_DELIMITER).forEach((v) => {\r\n const [name, value] = v.split(FILTER_PAIR_DELIMITER);\r\n result[name] = value;\r\n });\r\n\r\n return result;\r\n};\r\n\r\nexport default { encode, decode };\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n\r\nexport const isDefined = (value: unknown): boolean => {\r\n return typeof value !== 'undefined' && typeof value !== 'function';\r\n};\r\n\r\nexport const isValid = (value: unknown): boolean => {\r\n if (!isDefined(value)) {\r\n return false;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n return !Number.isNaN(value);\r\n }\r\n\r\n return true;\r\n};\r\n\r\nexport const ensureNotNull = (value: unknown, name: string): void => {\r\n if (value === null) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be null.`);\r\n }\r\n\r\n if (!isValid(value)) {\r\n throw new TypeError(`Parameter \"${name}\" has an invalid value.`);\r\n }\r\n};\r\n\r\nexport const ensureNotEmpty = (value: unknown, name: string): void => {\r\n ensureNotNull(value, name);\r\n\r\n if (!value) {\r\n throw new TypeError(`Parameter \"${name}\" cannot be empty.`);\r\n }\r\n};\r\n\r\nexport default {\r\n isDefined,\r\n isValid,\r\n ensureNotNull,\r\n ensureNotEmpty,\r\n};\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PageInstance, Pagination, PaginationMethods } from '@/types/vo/Page';\r\n\r\nconst Page = function (content: T, pagination?: Partial) {\r\n const pageNumber = parseInt(pagination?.pagenumber || '0', 10);\r\n const itemsNumber = parseInt(pagination?.itemsnumber || '0', 10);\r\n const totalPages = parseInt(pagination?.totalpages || '0', 10);\r\n const totalItems = parseInt(pagination?.totalitems || '0', 10);\r\n\r\n const page: PaginationMethods = {\r\n getContent(this: void): T {\r\n return content;\r\n },\r\n\r\n getPagination(this: void): Pagination {\r\n return {\r\n pageNumber,\r\n itemsNumber,\r\n totalPages,\r\n totalItems,\r\n hasNext: totalPages > pageNumber + 1,\r\n };\r\n },\r\n\r\n getPageNumber(this: void): number {\r\n return pageNumber;\r\n },\r\n\r\n getItemsNumber(this: void): number {\r\n return itemsNumber;\r\n },\r\n\r\n getTotalPages(this: void): number {\r\n return totalPages;\r\n },\r\n\r\n getTotalItems(this: void): number {\r\n return totalItems;\r\n },\r\n\r\n hasNext(this: void): boolean {\r\n return totalPages > pageNumber + 1;\r\n },\r\n };\r\n\r\n return new Proxy(content, {\r\n get(obj: T, prop: string | symbol, receiver) {\r\n if (Object.hasOwn(page, prop)) {\r\n return page[prop as keyof typeof page];\r\n }\r\n\r\n return Reflect.get(obj, prop, receiver);\r\n },\r\n\r\n set(obj, prop, value, receiver) {\r\n return Reflect.set(obj, prop, value, receiver);\r\n },\r\n\r\n getPrototypeOf() {\r\n return (Page.prototype as object) || null;\r\n },\r\n }) as PageInstance;\r\n};\r\n\r\nexport default Page;\r\n","/**\r\n * JS representation of the Bundle Service. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToBundle from '@/converters/itemToBundle';\r\n\r\n// services\r\nimport itemToLicense from '@/converters/itemToLicense';\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { BundleEntity, BundleProps, SavedBundleProps } from '@/types/entities/Bundle';\r\nimport { LicenseEntity, LicenseProps, SavedLicenseProps } from '@/types/entities/License';\r\nimport { IBundleService } from '@/types/services/BundleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Bundle.ENDPOINT_PATH;\r\nconst endpointObtain = Constants.Bundle.ENDPOINT_OBTAIN_PATH;\r\nconst type = Constants.Bundle.TYPE;\r\n\r\nconst bundleService: IBundleService = {\r\n /**\r\n * Gets a bundle by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#get-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the bundle number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Returns bundle of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#bundles-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of bundle entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const bundles: BundleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToBundle>(v));\r\n\r\n return Page(bundles || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates a new bundle with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#create-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created bundle object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, endpoint, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Updates bundle properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#update-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param bundle NetLicensing.Bundle\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated bundle in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n bundle: BundleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(bundle, 'bundle');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, bundle.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToBundle>(item);\r\n },\r\n\r\n /**\r\n * Deletes bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#delete-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Obtain bundle.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/bundle-services#obtain-bundle\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * bundle number\r\n * @param number string\r\n *\r\n * licensee number\r\n * @param licenseeNumber String\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses\r\n * @returns {Promise}\r\n */\r\n async obtain(\r\n context: ContextInstance,\r\n number: string,\r\n licenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise>[]> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(licenseeNumber, 'licenseeNumber');\r\n\r\n const data = { [Constants.Licensee.LICENSEE_NUMBER]: licenseeNumber };\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointObtain}`, data, config);\r\n const items = response.data.items;\r\n\r\n const licenses = items?.item.filter((v) => v.type === Constants.License.TYPE);\r\n\r\n return licenses?.map((v) => itemToLicense>(v)) || [];\r\n },\r\n};\r\n\r\nexport default bundleService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport { ProductModuleValidation, ValidationResultsInstance } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { isValid } from '@/utils/validation';\r\n\r\nclass ValidationResults implements ValidationResultsInstance {\r\n readonly validations: Record;\r\n ttl?: Date;\r\n\r\n constructor() {\r\n this.validations = {};\r\n }\r\n\r\n getValidators(): Record {\r\n return this.validations;\r\n }\r\n\r\n setValidation(validation: ProductModuleValidation): this {\r\n this.validations[validation.productModuleNumber] = validation;\r\n return this;\r\n }\r\n\r\n getValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.validations[productModuleNumber] || def;\r\n }\r\n\r\n setProductModuleValidation(validation: ProductModuleValidation): this {\r\n return this.setValidation(validation);\r\n }\r\n\r\n getProductModuleValidation(productModuleNumber: string, def?: D): ProductModuleValidation | D {\r\n return this.getValidation(productModuleNumber, def);\r\n }\r\n\r\n setTtl(ttl: Date | string): this {\r\n if (!isValid(ttl)) {\r\n throw new TypeError(`Bad ttl:${ttl.toString()}`);\r\n }\r\n\r\n this.ttl = new Date(ttl);\r\n return this;\r\n }\r\n\r\n getTtl(): Date | undefined {\r\n return this.ttl;\r\n }\r\n\r\n toString(): string {\r\n let data = 'ValidationResult [';\r\n\r\n Object.keys(this.validations).forEach((pmNumber) => {\r\n data += `ProductModule<${pmNumber}>`;\r\n\r\n if (pmNumber in this.validations) {\r\n data += JSON.stringify(this.validations[pmNumber]);\r\n }\r\n });\r\n\r\n data += ']';\r\n\r\n return data;\r\n }\r\n}\r\n\r\nexport default (): ValidationResultsInstance => new ValidationResults();\r\n","/**\r\n * Licensee Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/licensee-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicensee from '@/converters/itemToLicensee';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseeProps, LicenseeEntity, SavedLicenseeProps } from '@/types/entities/Licensee';\r\nimport { ILicenseeService } from '@/types/services/LicenseeService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\nimport { ValidationParametersInstance } from '@/types/vo/ValidationParameters';\r\nimport { ValidationResultsInstance as IValidationResults } from '@/types/vo/ValidationResults';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\nimport ValidationResults from '@/vo/ValidationResults';\r\n\r\nconst endpoint = Constants.Licensee.ENDPOINT_PATH;\r\nconst endpointValidate = Constants.Licensee.ENDPOINT_PATH_VALIDATE;\r\nconst endpointTransfer = Constants.Licensee.ENDPOINT_PATH_TRANSFER;\r\nconst type = Constants.Licensee.TYPE;\r\n\r\nconst licenseeService: ILicenseeService = {\r\n /**\r\n * Gets licensee by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#get-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the licensee number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the licensee in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Returns all licensees of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#licensees-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of licensees (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseeEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicensee>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new licensee object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#create-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new licensee is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created licensee object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const data = licensee.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Updates licensee properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#update-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licensee NetLicensing.Licensee\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated licensee in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licensee: LicenseeEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licensee, 'licensee');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licensee.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicensee>(item);\r\n },\r\n\r\n /**\r\n * Deletes licensee.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#delete-licensee\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n\r\n /**\r\n * Validates active licenses of the licensee.\r\n * In the case of multiple product modules validation,\r\n * required parameters indexes will be added automatically.\r\n * See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/licensee-services#validate-licensee\r\n *\r\n * @param context NetLicensing.Context\r\n *\r\n * licensee number\r\n * @param number string\r\n *\r\n * optional validation parameters. See ValidationParameters and licensing model documentation for\r\n * details.\r\n * @param validationParameters NetLicensing.ValidationParameters.\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {ValidationResults}\r\n */\r\n async validate(\r\n context: ContextInstance,\r\n number: string,\r\n validationParameters?: ValidationParametersInstance,\r\n config?: RequestConfig,\r\n ): Promise {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const data: Record = {};\r\n\r\n if (validationParameters) {\r\n const productNumber: string | undefined = validationParameters.productNumber;\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const licenseeProperties = validationParameters.licenseeProperties;\r\n\r\n Object.keys(licenseeProperties).forEach((key: string) => {\r\n data[key] = validationParameters.getLicenseeProperty(key);\r\n });\r\n\r\n if (validationParameters.isForOfflineUse()) {\r\n data.forOfflineUse = true;\r\n }\r\n\r\n if (validationParameters.isDryRun()) {\r\n data.dryRun = true;\r\n }\r\n\r\n const parameters = validationParameters.getParameters();\r\n\r\n Object.keys(parameters).forEach((pmNumber, i) => {\r\n data[`${Constants.ProductModule.PRODUCT_MODULE_NUMBER}${i}`] = pmNumber;\r\n\r\n const parameter = parameters[pmNumber];\r\n\r\n if (parameter) {\r\n Object.keys(parameter).forEach((key: string) => {\r\n data[key + i] = parameter[key];\r\n });\r\n }\r\n });\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}/${endpointValidate}`, data, config);\r\n\r\n const validationResults = ValidationResults();\r\n\r\n const ttl = response.data.ttl;\r\n\r\n if (ttl) {\r\n validationResults.setTtl(ttl);\r\n }\r\n\r\n const items = response.data.items?.item.filter((v) => v.type === Constants.Validation.TYPE);\r\n\r\n items?.forEach((v) => {\r\n validationResults.setValidation(itemToObject(v));\r\n });\r\n\r\n return validationResults;\r\n },\r\n\r\n /**\r\n * Transfer licenses between licensees.\r\n * @see https://netlicensing.io/wiki/licensee-services#transfer-licenses\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the number of the licensee receiving licenses\r\n * @param number string\r\n *\r\n * the number of the licensee delivering licenses\r\n * @param sourceLicenseeNumber string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * @returns {Promise}\r\n */\r\n transfer(\r\n context: ContextInstance,\r\n number: string,\r\n sourceLicenseeNumber: string,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotEmpty(sourceLicenseeNumber, 'sourceLicenseeNumber');\r\n\r\n const data = { sourceLicenseeNumber };\r\n\r\n return Service.post(context, `${endpoint}/${number}/${endpointTransfer}`, data, config);\r\n },\r\n};\r\n\r\nexport default licenseeService;\r\n","/**\r\n * JS representation of the License Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicense from '@/converters/itemToLicense';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { LicenseProps, LicenseEntity, SavedLicenseProps } from '@/types/entities/License';\r\nimport { ILicenseService } from '@/types/services/LicenseService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.License.ENDPOINT_PATH;\r\nconst type = Constants.License.TYPE;\r\n\r\nconst licenseService: ILicenseService = {\r\n /**\r\n * Gets license by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#get-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Returns licenses of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#licenses-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return array of licenses (of all products) or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicense>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#create-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent licensee to which the new license is to be added\r\n * @param licenseeNumber string\r\n *\r\n * license template that the license is created from\r\n * @param licenseTemplateNumber string\r\n *\r\n * For privileged logins specifies transaction for the license creation. For regular logins new\r\n * transaction always created implicitly, and the operation will be in a separate transaction.\r\n * Transaction is generated with the provided transactionNumber, or, if transactionNumber is null, with\r\n * auto-generated number.\r\n * @param transactionNumber null|string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created license object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n licenseeNumber: string | null,\r\n licenseTemplateNumber: string | null,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (licenseeNumber) {\r\n data.licenseeNumber = licenseeNumber;\r\n }\r\n\r\n if (licenseTemplateNumber) {\r\n data.licenseTemplateNumber = licenseTemplateNumber;\r\n }\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Updates license properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#update-license\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * transaction for the license update. Created implicitly if transactionNumber is null. In this case the\r\n * operation will be in a separate transaction.\r\n * @param transactionNumber string|null\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param license NetLicensing.License\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated license in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transactionNumber: string | null,\r\n license: LicenseEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(license, 'license');\r\n\r\n const data = license.serialize();\r\n\r\n if (transactionNumber) {\r\n data.transactionNumber = transactionNumber;\r\n }\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicense>(item);\r\n },\r\n\r\n /**\r\n * Deletes license.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-services#delete-license\r\n *\r\n * When any license is deleted, corresponding transaction is created automatically.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/license-template-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToLicenseTemplate from '@/converters/itemToLicenseTemplate';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport {\r\n LicenseTemplateProps,\r\n LicenseTemplateEntity,\r\n SavedLicenseTemplateProps,\r\n} from '@/types/entities/LicenseTemplate';\r\nimport { ILicenseTemplateService } from '@/types/services/LicenseTemplateService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.LicenseTemplate.ENDPOINT_PATH;\r\nconst type = Constants.LicenseTemplate.TYPE;\r\n\r\nconst licenseTemplateService: ILicenseTemplateService = {\r\n /**\r\n * Gets license template by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#get-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the license template number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the license template object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Returns all license templates of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#license-templates-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of license templates (of all products/modules) or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: LicenseTemplateEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToLicenseTemplate>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new license template object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#create-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product module to which the new license template is to be added\r\n * @param productModuleNumber\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created license template object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productModuleNumber: string | null,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const data = licenseTemplate.serialize();\r\n\r\n if (productModuleNumber) {\r\n data.productModuleNumber = productModuleNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Updates license template properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#update-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param licenseTemplate NetLicensing.LicenseTemplate\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated license template in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n licenseTemplate: LicenseTemplateEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(licenseTemplate, 'licenseTemplate');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, licenseTemplate.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToLicenseTemplate>(item);\r\n },\r\n\r\n /**\r\n * Deletes license template.See NetLicensingAPI JavaDoc for details:\r\n * @see https://netlicensing.io/wiki/license-template-services#delete-license-template\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * license template number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default licenseTemplateService;\r\n","/**\r\n * JS representation of the Notification Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/notification-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToNotification from '@/converters/itemToNotification';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { NotificationProps, NotificationEntity, SavedNotificationProps } from '@/types/entities/Notification';\r\nimport { INotificationService } from '@/types/services/NotificationService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Notification.ENDPOINT_PATH;\r\nconst type = Constants.Notification.TYPE;\r\n\r\nconst notificationService: INotificationService = {\r\n /**\r\n * Gets notification by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#get-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the notification number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the notification object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Returns notifications of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#notifications-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of notification entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: NotificationEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToNotification>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new notification with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#create-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created notification object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, endpoint, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Updates notification properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#update-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param notification NetLicensing.Notification\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated notification in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n notification: NotificationEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(notification, 'notification');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, notification.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToNotification>(item);\r\n },\r\n\r\n /**\r\n * Deletes notification.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/notification-services#delete-notification\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * notification number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default notificationService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToPaymentMethod from '@/converters/itemToPaymentMethod';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { PaymentMethodProps, PaymentMethodEntity, SavedPaymentMethodProps } from '@/types/entities/PaymentMethod';\r\nimport { IPaymentMethodService } from '@/types/services/PaymentMethodService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.PaymentMethod.ENDPOINT_PATH;\r\nconst type = Constants.PaymentMethod.TYPE;\r\n\r\nconst paymentMethodService: IPaymentMethodService = {\r\n /**\r\n * Gets payment method by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#get-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the payment method in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n\r\n /**\r\n * Returns payment methods of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#payment-methods-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of payment method entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: PaymentMethodEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToPaymentMethod>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Updates payment method properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/payment-method-services#update-payment-method\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the payment method number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param paymentMethod NetLicensing.PaymentMethod\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated payment method in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n paymentMethod: PaymentMethodEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(paymentMethod, 'paymentMethod');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, paymentMethod.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToPaymentMethod>(item);\r\n },\r\n};\r\n\r\nexport default paymentMethodService;\r\n","/**\r\n * JS representation of the ProductModule Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-module-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProductModule from '@/converters/itemToProductModule';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductModuleProps, ProductModuleEntity, SavedProductModuleProps } from '@/types/entities/ProductModule';\r\nimport { IProductModuleService } from '@/types/services/ProductModuleService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.ProductModule.ENDPOINT_PATH;\r\nconst type = Constants.ProductModule.TYPE;\r\n\r\nconst productModuleService: IProductModuleService = {\r\n /**\r\n * Gets product module by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#get-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product module number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product module object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#product-modules-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product modules entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductModuleEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProductModule>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product module object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#create-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * parent product to which the new product module is to be added\r\n * @param productNumber string\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * the newly created product module object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n productNumber: string | null,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const data = productModule.serialize();\r\n\r\n if (productNumber) {\r\n data.productNumber = productNumber;\r\n }\r\n\r\n const response = await Service.post(context, endpoint, data, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Updates product module properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#update-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param productModule NetLicensing.ProductModule\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product module in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n productModule: ProductModuleEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(productModule, 'productModule');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, productModule.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProductModule>(item);\r\n },\r\n\r\n /**\r\n * Deletes product module.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-module-services#delete-product-module\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product module number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productModuleService;\r\n","/**\r\n * JS representation of the Product Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/product-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToProduct from '@/converters/itemToProduct';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { ProductProps, ProductEntity, SavedProductProps } from '@/types/entities/Product';\r\nimport { IProductService } from '@/types/services/ProductService';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Product.ENDPOINT_PATH;\r\nconst type = Constants.Product.TYPE;\r\n\r\nconst productService: IProductService = {\r\n /**\r\n * Gets product by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#get-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the product number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the product object in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Returns products of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#products-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of product entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: ProductEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToProduct>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new product with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#create-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created product object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, endpoint, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Updates product properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#update-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param product NetLicensing.Product\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * updated product in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n product: ProductEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(product, 'product');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, product.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToProduct>(item);\r\n },\r\n\r\n /**\r\n * Deletes product.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/product-services#delete-product\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * product number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default productService;\r\n","/**\r\n * JS representation of the Token Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/token-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport { AxiosResponse } from 'axios';\r\n\r\n// constants\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToToken from '@/converters/itemToToken';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination, NlicResponse } from '@/types/api/response';\r\nimport { TokenProps, TokenEntity, SavedTokenProps } from '@/types/entities/Token';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { ITokenService } from '@/types/services/TokenService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Token.ENDPOINT_PATH;\r\nconst type = Constants.Token.TYPE;\r\n\r\nconst tokenService: ITokenService = {\r\n /**\r\n * Gets token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#get-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the token in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Returns tokens of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#tokens-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string|undefined|null\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of token entities or empty array if nothing found.\r\n * @return array\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TokenEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToToken>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new token.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#create-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context Context\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param token Token\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return created token in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n token: TokenEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(token, 'token');\r\n\r\n const response = await Service.post(context, endpoint, token.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToToken>(item);\r\n },\r\n\r\n /**\r\n * Delete token by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/token-services#delete-token\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the token number\r\n * @param number string\r\n *\r\n * if true, any entities that depend on the one being deleted will be deleted too\r\n * @param forceCascade boolean\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return boolean state of delete in promise\r\n * @returns {Promise}\r\n */\r\n delete(\r\n context: ContextInstance,\r\n number: string,\r\n forceCascade?: boolean,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n return Service.delete(context, `${endpoint}/${number}`, { forceCascade: Boolean(forceCascade) }, config);\r\n },\r\n};\r\n\r\nexport default tokenService;\r\n","/**\r\n * JS representation of the Transaction Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/transaction-services\r\n *\r\n * Transaction is created each time change to LicenseService licenses happens. For instance licenses are\r\n * obtained by a licensee, licenses disabled by vendor, licenses deleted, etc. Transaction is created no matter what\r\n * source has initiated the change to licenses: it can be either a direct purchase of licenses by a licensee via\r\n * NetLicensing Shop, or licenses can be given to a licensee by a vendor. Licenses can also be assigned implicitly by\r\n * NetLicensing if it is defined so by a license model (e.g. evaluation license may be given automatically). All these\r\n * events are reflected in transactions. Of all the transaction handling routines only read-only routines are exposed to\r\n * the public API, as transactions are only allowed to be created and modified by NetLicensing internally.\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToTransaction from '@/converters/itemToTransaction';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport type { ItemPagination } from '@/types/api/response';\r\nimport { TransactionProps, TransactionEntity, SavedTransactionProps } from '@/types/entities/Transaction';\r\nimport type { RequestConfig } from '@/types/services/Service';\r\nimport type { ITransactionService } from '@/types/services/TransactionService';\r\nimport type { ContextInstance } from '@/types/vo/Context';\r\nimport type { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\nimport { ensureNotEmpty, ensureNotNull } from '@/utils/validation';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst endpoint = Constants.Transaction.ENDPOINT_PATH;\r\nconst type = Constants.Transaction.TYPE;\r\n\r\nconst transactionService: ITransactionService = {\r\n /**\r\n * Gets transaction by its number.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#get-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * the transaction number\r\n * @param number string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the transaction in promise\r\n * @returns {Promise}\r\n */\r\n async get(\r\n context: ContextInstance,\r\n number: string,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n\r\n const response = await Service.get(context, `${endpoint}/${number}`, {}, config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Returns all transactions of a vendor.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#transactions-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter string\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of transaction entities or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async list(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise>[]>> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const list: TransactionEntity>[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToTransaction>(v));\r\n\r\n return Page(list || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Creates new transaction object with given properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#create-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * non-null properties will be taken for the new object, null properties will either stay null, or will\r\n * be set to a default value, depending on property.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return the newly created transaction object in promise\r\n * @returns {Promise}\r\n */\r\n async create(\r\n context: ContextInstance,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, endpoint, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n\r\n /**\r\n * Updates transaction properties.See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/transaction-services#update-transaction\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * transaction number\r\n * @param number string\r\n *\r\n * non-null properties will be updated to the provided values, null properties will stay unchanged.\r\n * @param transaction NetLicensing.Transaction\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * return updated transaction in promise.\r\n * @returns {Promise}\r\n */\r\n async update(\r\n context: ContextInstance,\r\n number: string,\r\n transaction: TransactionEntity,\r\n config?: RequestConfig,\r\n ): Promise>> {\r\n ensureNotEmpty(number, 'number');\r\n ensureNotNull(transaction, 'transaction');\r\n\r\n const response = await Service.post(context, `${endpoint}/${number}`, transaction.serialize(), config);\r\n const item = response.data.items?.item.find((v) => v.type === type);\r\n\r\n return itemToTransaction>(item);\r\n },\r\n};\r\n\r\nexport default transactionService;\r\n","/**\r\n * JS representation of the Utility Service. See NetLicensingAPI for details:\r\n * https://netlicensing.io/wiki/utility-services\r\n *\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport Constants from '@/constants';\r\n\r\n// converters\r\nimport itemToCountry from '@/converters/itemToCountry';\r\nimport itemToObject from '@/converters/itemToObject';\r\n\r\n// services\r\nimport Service from '@/services/Service';\r\n\r\n// types\r\nimport { ItemPagination } from '@/types/api/response';\r\nimport { LicenseTypeValues } from '@/types/constants/LicenseType';\r\nimport { LicensingModelValues } from '@/types/constants/LicensingModel';\r\nimport { CountryEntity } from '@/types/entities/Country';\r\nimport { RequestConfig } from '@/types/services/Service';\r\nimport { IUtilityService } from '@/types/services/UtilityService';\r\nimport { ContextInstance } from '@/types/vo/Context';\r\nimport { PageInstance } from '@/types/vo/Page';\r\n\r\n// utils\r\nimport { encode } from '@/utils/filter';\r\n\r\n// vo\r\nimport Page from '@/vo/Page';\r\n\r\nconst baseEndpoint = Constants.Utility.ENDPOINT_PATH;\r\n\r\nconst utilityService: IUtilityService = {\r\n /**\r\n * Returns all license types. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#license-types-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license types or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicenseTypes(context: ContextInstance, config?: RequestConfig): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSE_TYPES}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSE_TYPE;\r\n\r\n const licenseTypes: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licenseTypes as LicenseTypeValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all license models. See NetLicensingAPI for details:\r\n * @see https://netlicensing.io/wiki/utility-services#licensing-models-list\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context NetLicensing.Context\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * array of available license models or empty array if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listLicensingModels(\r\n context: ContextInstance,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_LICENSING_MODELS}`;\r\n\r\n const response = await Service.get(context, endpoint, undefined, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.LICENSING_MODEL_TYPE;\r\n\r\n const licensingModels: string[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToObject<{ name: string }>(v).name);\r\n\r\n return Page((licensingModels as LicensingModelValues[]) || [], items as ItemPagination);\r\n },\r\n\r\n /**\r\n * Returns all countries.\r\n *\r\n * determines the vendor on whose behalf the call is performed\r\n * @param context\r\n *\r\n * reserved for the future use, must be omitted / set to NULL\r\n * @param filter\r\n *\r\n * (optional) service request config\r\n * @param config\r\n *\r\n * collection of available countries or null/empty list if nothing found in promise.\r\n * @returns {Promise}\r\n */\r\n async listCountries(\r\n context: ContextInstance,\r\n filter?: Record | string | null,\r\n config?: RequestConfig,\r\n ): Promise> {\r\n const data: { [Constants.FILTER]: string } = {};\r\n\r\n if (filter) {\r\n data[Constants.FILTER] = typeof filter === 'string' ? filter : encode(filter);\r\n }\r\n\r\n const endpoint = `${baseEndpoint}/${Constants.Utility.ENDPOINT_PATH_COUNTRIES}`;\r\n\r\n const response = await Service.get(context, endpoint, data, config);\r\n const items = response.data.items;\r\n\r\n const type = Constants.Utility.COUNTRY_TYPE;\r\n\r\n const countries: CountryEntity[] | undefined = items?.item\r\n .filter((v) => v.type === type)\r\n .map((v) => itemToCountry(v));\r\n\r\n return Page(countries || [], items as ItemPagination);\r\n },\r\n};\r\n\r\nexport default utilityService;\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\nimport SecurityModeEnum from '@/constants/SecurityMode';\r\n\r\n// types\r\nimport type { SecurityModeValues } from '@/types/constants/SecurityMode';\r\nimport type { ContextConfig, ContextInstance } from '@/types/vo/Context';\r\n\r\nclass Context implements ContextInstance {\r\n baseUrl: string;\r\n securityMode: SecurityModeValues;\r\n username?: string;\r\n password?: string;\r\n apiKey?: string;\r\n publicKey?: string;\r\n\r\n constructor(props?: ContextConfig) {\r\n this.baseUrl = props?.baseUrl || 'https://go.netlicensing.io/core/v2/rest';\r\n this.securityMode = props?.securityMode || SecurityModeEnum.BASIC_AUTHENTICATION;\r\n this.username = props?.username;\r\n this.password = props?.password;\r\n this.apiKey = props?.apiKey;\r\n this.publicKey = props?.publicKey;\r\n }\r\n\r\n setBaseUrl(baseUrl: string): this {\r\n this.baseUrl = baseUrl;\r\n return this;\r\n }\r\n\r\n getBaseUrl(): string {\r\n return this.baseUrl;\r\n }\r\n\r\n setSecurityMode(securityMode: SecurityModeValues): this {\r\n this.securityMode = securityMode;\r\n return this;\r\n }\r\n\r\n getSecurityMode(): SecurityModeValues {\r\n return this.securityMode;\r\n }\r\n\r\n setUsername(username: string): this {\r\n this.username = username;\r\n return this;\r\n }\r\n\r\n getUsername(def?: D): string | D {\r\n return (this.username || def) as string | D;\r\n }\r\n\r\n setPassword(password: string): this {\r\n this.password = password;\r\n return this;\r\n }\r\n\r\n getPassword(def?: D): string | D {\r\n return (this.password || def) as string | D;\r\n }\r\n\r\n setApiKey(apiKey: string): this {\r\n this.apiKey = apiKey;\r\n return this;\r\n }\r\n\r\n getApiKey(def?: D): string | D {\r\n return (this.apiKey || def) as string | D;\r\n }\r\n\r\n setPublicKey(publicKey: string): this {\r\n this.publicKey = publicKey;\r\n return this;\r\n }\r\n\r\n getPublicKey(def?: D): string | D {\r\n return (this.publicKey || def) as string | D;\r\n }\r\n}\r\n\r\nexport default (props?: ContextConfig): ContextInstance => new Context(props);\r\n","/**\r\n * @author Labs64 \r\n * @license Apache-2.0\r\n * @link https://netlicensing.io\r\n * @copyright 2017 Labs64 NetLicensing\r\n */\r\n// types\r\nimport {\r\n ValidationParametersInstance,\r\n Parameter,\r\n Parameters,\r\n LicenseeProperties,\r\n} from '@/types/vo/ValidationParameters';\r\n\r\nclass ValidationParameters implements ValidationParametersInstance {\r\n productNumber?: string;\r\n dryRun?: boolean;\r\n forOfflineUse?: boolean;\r\n licenseeProperties: LicenseeProperties;\r\n parameters: Parameters;\r\n\r\n constructor() {\r\n this.parameters = {};\r\n this.licenseeProperties = {};\r\n }\r\n\r\n setProductNumber(productNumber: string): this {\r\n this.productNumber = productNumber;\r\n return this;\r\n }\r\n\r\n getProductNumber(): string | undefined {\r\n return this.productNumber;\r\n }\r\n\r\n setLicenseeName(licenseeName: string): this {\r\n this.licenseeProperties.licenseeName = licenseeName;\r\n return this;\r\n }\r\n\r\n getLicenseeName(): string | undefined {\r\n return this.licenseeProperties.licenseeName;\r\n }\r\n\r\n setLicenseeSecret(licenseeSecret: string): this {\r\n this.licenseeProperties.licenseeSecret = licenseeSecret;\r\n return this;\r\n }\r\n\r\n getLicenseeSecret(): string | undefined {\r\n return this.licenseeProperties.licenseeSecret;\r\n }\r\n\r\n getLicenseeProperties(): LicenseeProperties {\r\n return this.licenseeProperties;\r\n }\r\n\r\n setLicenseeProperty(key: string, value: string): this {\r\n this.licenseeProperties[key] = value;\r\n return this;\r\n }\r\n\r\n getLicenseeProperty(key: string, def?: D): string | D {\r\n return (this.licenseeProperties[key] || def) as string | D;\r\n }\r\n\r\n setForOfflineUse(forOfflineUse: boolean): this {\r\n this.forOfflineUse = forOfflineUse;\r\n return this;\r\n }\r\n\r\n isForOfflineUse() {\r\n return !!this.forOfflineUse;\r\n }\r\n\r\n setDryRun(dryRun: boolean): this {\r\n this.dryRun = dryRun;\r\n return this;\r\n }\r\n\r\n isDryRun(): boolean {\r\n return !!this.dryRun;\r\n }\r\n\r\n getParameters(): Parameters {\r\n return this.parameters;\r\n }\r\n\r\n setParameter(productModuleNumber: string, parameter: Parameter): this {\r\n this.parameters[productModuleNumber] = parameter;\r\n return this;\r\n }\r\n\r\n getParameter(productModuleNumber: string): Parameter | undefined {\r\n return this.parameters[productModuleNumber];\r\n }\r\n\r\n getProductModuleValidationParameters(productModuleNumber: string): Parameter | undefined {\r\n return this.getParameter(productModuleNumber);\r\n }\r\n\r\n setProductModuleValidationParameters(productModuleNumber: string, productModuleParameters: Parameter): this {\r\n return this.setParameter(productModuleNumber, productModuleParameters);\r\n }\r\n}\r\n\r\nexport default (): ValidationParametersInstance => new ValidationParameters();\r\n"],"mappings":"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","names":["LicenseeSecretMode","LicenseeSecretMode_default","LicenseType","LicenseType_default","NotificationEvent","NotificationEvent_default","NotificationProtocol","NotificationProtocol_default","SecurityMode","SecurityMode_default","TimeVolumePeriod","TimeVolumePeriod_default","TokenType","TokenType_default","TransactionSource","TransactionSource_default","TransactionStatus","TransactionStatus_default","constants_default","LicenseeSecretMode_default","LicenseType_default","NotificationEvent_default","NotificationProtocol_default","SecurityMode_default","TimeVolumePeriod_default","TokenType_default","TransactionSource_default","TransactionStatus_default","ApiKeyRole","ApiKeyRole_default","LicensingModel","LicensingModel_default","NodeSecretMode","NodeSecretMode_default","PaymentMethodEnum","PaymentMethodEnum_default","cast","value","extractProperties","properties","result","name","extractLists","lists","list","itemToObject","item","itemToObject_default","has","obj","key","set","value","get","def","serialize_default","obj","options","map","ignore","k","v","defineEntity","props","methods","proto","options","listeners","base","key","value","set","def","get","has","properties","k","v","serialize_default","obj","prop","receiver","l","defineEntity_default","Bundle","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","numbers","cast","serialize_default","Bundle_default","itemToBundle_default","item","props","itemToObject_default","licenseTemplateNumbers","Bundle_default","Country","properties","props","defineEntity_default","Country_default","itemToCountry_default","item","Country_default","itemToObject_default","License","properties","props","defineEntity_default","active","set","def","get","number","name","price","currency","hidden","serialize_default","License_default","itemToLicense_default","item","props","itemToObject_default","startDate","License_default","Licensee","properties","props","defineEntity_default","active","set","def","get","number","name","mark","serialize_default","Licensee_default","itemToLicensee_default","item","Licensee_default","itemToObject_default","LicenseTemplate","properties","props","defineEntity_default","active","set","def","get","number","name","type","price","currency","automatic","hidden","hideLicenses","productModuleNumber","serialize_default","LicenseTemplate_default","itemToLicenseTemplate_default","item","LicenseTemplate_default","itemToObject_default","Notification","properties","props","defineEntity_default","active","set","def","get","number","name","protocol","events","event","payload","endpoint","data","serialize_default","Notification_default","itemToNotification_default","item","props","itemToObject_default","events","Notification_default","PaymentMethod","properties","props","defineEntity_default","active","set","def","get","number","PaymentMethod_default","itemToPaymentMethod_default","item","PaymentMethod_default","itemToObject_default","Product","properties","props","defineEntity_default","active","set","def","get","number","name","version","description","licensingInfo","licenseeAutoCreate","discounts","discount","productDiscounts","map","serialize_default","Product_default","AxiosError","NlicError","_NlicError","message","code","config","request","response","stack","ProductDiscount","properties","props","NlicError","defineEntity_default","totalPrice","set","def","get","currency","amountFix","amountPercent","total","amount","obj","prop","ProductDiscount_default","itemToProduct_default","item","props","itemToObject_default","discounts","d","ProductDiscount_default","Product_default","ProductModule","properties","props","defineEntity_default","active","set","def","get","number","name","licensingModel","productNumber","serialize_default","ProductModule_default","itemToProductModule_default","item","ProductModule_default","itemToObject_default","Token","properties","props","defineEntity_default","active","set","def","get","number","expirationTime","tokenType","licenseeNumber","action","apiKeyRole","bundleNumber","bundlePrice","productNumber","predefinedShoppingItem","successURL","successURLTitle","cancelURL","cancelURLTitle","serialize_default","Token_default","itemToToken_default","item","props","itemToObject_default","expirationTime","Token_default","LicenseTransactionJoin","transaction","license","LicenseTransactionJoin_default","Transaction","properties","props","defineEntity_default","active","set","def","get","number","status","source","grandTotal","discount","currency","dateCreated","paymentMethod","joins","clone","serialize_default","Transaction_default","itemToTransaction_default","item","props","itemToObject_default","dateCreated","dateClosed","licenseTransactionJoins","transactionNumber","licenseNumber","transaction","Transaction_default","license","License_default","LicenseTransactionJoin_default","axios","axiosInstance","lastResponse","info","setAxiosInstance","instance","getAxiosInstance","setLastResponse","response","getLastResponse","setInfo","infos","getInfo","package_default","toQueryString_default","data","query","build","obj","keyPrefix","item","key","value","request_default","context","method","endpoint","data","config","headers","package_default","req","d","h","toQueryString_default","SecurityMode_default","NlicError","instance","getAxiosInstance","response","info","setLastResponse","setInfo","eInfo","type","e","error","message","get","context","endpoint","data","config","request_default","post","del","service","instance","setAxiosInstance","getAxiosInstance","getLastResponse","getInfo","context","endpoint","data","config","get","post","del","method","request_default","toQueryString_default","Service_default","encode","filter","key","decode","result","v","name","value","isDefined","value","isValid","ensureNotNull","name","ensureNotEmpty","Page","content","pagination","pageNumber","itemsNumber","totalPages","totalItems","page","obj","prop","receiver","value","Page_default","endpoint","constants_default","endpointObtain","type","bundleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToBundle_default","filter","data","encode","items","bundles","Page_default","bundle","ensureNotNull","forceCascade","licenseeNumber","itemToLicense_default","BundleService_default","ValidationResults","validation","productModuleNumber","def","ttl","isValid","data","pmNumber","ValidationResults_default","endpoint","constants_default","endpointValidate","endpointTransfer","type","licenseeService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicensee_default","filter","data","encode","items","list","Page_default","productNumber","licensee","ensureNotNull","forceCascade","validationParameters","licenseeProperties","key","parameters","pmNumber","i","parameter","response","validationResults","ValidationResults_default","ttl","itemToObject_default","sourceLicenseeNumber","LicenseeService_default","endpoint","constants_default","type","licenseService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicense_default","filter","data","encode","items","list","Page_default","licenseeNumber","licenseTemplateNumber","transactionNumber","license","ensureNotNull","forceCascade","LicenseService_default","endpoint","constants_default","type","licenseTemplateService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToLicenseTemplate_default","filter","data","encode","items","list","Page_default","productModuleNumber","licenseTemplate","ensureNotNull","forceCascade","LicenseTemplateService_default","endpoint","constants_default","type","notificationService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToNotification_default","filter","data","encode","items","list","Page_default","notification","ensureNotNull","forceCascade","NotificationService_default","endpoint","constants_default","type","paymentMethodService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToPaymentMethod_default","filter","data","encode","items","list","Page_default","paymentMethod","ensureNotNull","PaymentMethodService_default","endpoint","constants_default","type","productModuleService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProductModule_default","filter","data","encode","items","list","Page_default","productNumber","productModule","ensureNotNull","forceCascade","ProductModuleService_default","endpoint","constants_default","type","productService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToProduct_default","filter","data","encode","items","list","Page_default","product","ensureNotNull","forceCascade","ProductService_default","endpoint","constants_default","type","tokenService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToToken_default","filter","data","encode","items","list","Page_default","token","ensureNotNull","forceCascade","TokenService_default","endpoint","constants_default","type","transactionService","context","number","config","ensureNotEmpty","item","Service_default","v","itemToTransaction_default","filter","data","encode","items","list","Page_default","transaction","ensureNotNull","TransactionService_default","baseEndpoint","constants_default","utilityService","context","config","endpoint","items","Service_default","type","licenseTypes","v","itemToObject_default","Page_default","licensingModels","filter","data","encode","countries","itemToCountry_default","UtilityService_default","Context","props","SecurityMode_default","baseUrl","securityMode","username","def","password","apiKey","publicKey","Context_default","ValidationParameters","productNumber","licenseeName","licenseeSecret","key","value","def","forOfflineUse","dryRun","productModuleNumber","parameter","productModuleParameters","ValidationParameters_default"]} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index cc88ef7..ba6d4a8 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,7 +14,7 @@ "@typescript-eslint/eslint-plugin": "^8.29.1", "@typescript-eslint/parser": "^8.29.1", "@vitest/eslint-plugin": "^1.1.43", - "axios": "^1.9.0", + "axios": "^1.13.0", "eslint": "^9.24.0", "eslint-plugin-import": "^2.31.0", "prettier": "3.5.3", @@ -517,6 +517,13 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@eslint/config-array/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/config-array/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -529,9 +536,9 @@ } }, "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "license": "ISC", "dependencies": { @@ -568,20 +575,20 @@ } }, "node_modules/@eslint/eslintrc": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.3.tgz", - "integrity": "sha512-Kr+LPIUVKz2qkx1HAMH8q1q6azbqBAsXJUxBl/ODDuVPX45Z9DfwB8tPjTi6nNZ8BuM3nbJxC5zCAg5elnBUTQ==", + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.4.tgz", + "integrity": "sha512-4h4MVF8pmBsncB60r0wSJiIeUKTSD4m7FmTFThG8RHlsg9ajqckLm9OraguFGZE4vVdpiI1Q4+hFnisopmG6gQ==", "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.4", + "ajv": "^6.14.0", "debug": "^4.3.2", "espree": "^10.0.1", "globals": "^14.0.0", "ignore": "^5.2.0", "import-fresh": "^3.2.1", "js-yaml": "^4.1.1", - "minimatch": "^3.1.2", + "minimatch": "^3.1.3", "strip-json-comments": "^3.1.1" }, "engines": { @@ -591,6 +598,13 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/@eslint/eslintrc/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -613,9 +627,9 @@ } }, "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "license": "ISC", "dependencies": { @@ -626,9 +640,9 @@ } }, "node_modules/@eslint/js": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.2.tgz", - "integrity": "sha512-q1mjIoW1VX4IvSocvM/vbTiveKC4k9eLrajNEuSsmjymSDEbpGddtpfOoN7YGAqBK3NG+uqo8ia4PDTt8buCYA==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.39.3.tgz", + "integrity": "sha512-1B1VkCq6FuUNlQvlBYb+1jDu/gV297TIs/OeiaSR9l1H27SVW55ONE1e1Vp16NqP683+xEGzxYtv4XCiDPaQiw==", "dev": true, "license": "MIT", "engines": { @@ -754,9 +768,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.57.1.tgz", - "integrity": "sha512-A6ehUVSiSaaliTxai040ZpZ2zTevHYbvu/lDoeAteHI8QnaosIzm4qwtezfRg1jOYaUmnzLX1AOD6Z+UJjtifg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.59.0.tgz", + "integrity": "sha512-upnNBkA6ZH2VKGcBj9Fyl9IGNPULcjXRlg0LLeaioQWueH30p6IXtJEbKAgvyv+mJaMxSm1l6xwDXYjpEMiLMg==", "cpu": [ "arm" ], @@ -768,9 +782,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.57.1.tgz", - "integrity": "sha512-dQaAddCY9YgkFHZcFNS/606Exo8vcLHwArFZ7vxXq4rigo2bb494/xKMMwRRQW6ug7Js6yXmBZhSBRuBvCCQ3w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.59.0.tgz", + "integrity": "sha512-hZ+Zxj3SySm4A/DylsDKZAeVg0mvi++0PYVceVyX7hemkw7OreKdCvW2oQ3T1FMZvCaQXqOTHb8qmBShoqk69Q==", "cpu": [ "arm64" ], @@ -782,9 +796,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.57.1.tgz", - "integrity": "sha512-crNPrwJOrRxagUYeMn/DZwqN88SDmwaJ8Cvi/TN1HnWBU7GwknckyosC2gd0IqYRsHDEnXf328o9/HC6OkPgOg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.59.0.tgz", + "integrity": "sha512-W2Psnbh1J8ZJw0xKAd8zdNgF9HRLkdWwwdWqubSVk0pUuQkoHnv7rx4GiF9rT4t5DIZGAsConRE3AxCdJ4m8rg==", "cpu": [ "arm64" ], @@ -796,9 +810,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.57.1.tgz", - "integrity": "sha512-Ji8g8ChVbKrhFtig5QBV7iMaJrGtpHelkB3lsaKzadFBe58gmjfGXAOfI5FV0lYMH8wiqsxKQ1C9B0YTRXVy4w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.59.0.tgz", + "integrity": "sha512-ZW2KkwlS4lwTv7ZVsYDiARfFCnSGhzYPdiOU4IM2fDbL+QGlyAbjgSFuqNRbSthybLbIJ915UtZBtmuLrQAT/w==", "cpu": [ "x64" ], @@ -810,9 +824,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.57.1.tgz", - "integrity": "sha512-R+/WwhsjmwodAcz65guCGFRkMb4gKWTcIeLy60JJQbXrJ97BOXHxnkPFrP+YwFlaS0m+uWJTstrUA9o+UchFug==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.59.0.tgz", + "integrity": "sha512-EsKaJ5ytAu9jI3lonzn3BgG8iRBjV4LxZexygcQbpiU0wU0ATxhNVEpXKfUa0pS05gTcSDMKpn3Sx+QB9RlTTA==", "cpu": [ "arm64" ], @@ -824,9 +838,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.57.1.tgz", - "integrity": "sha512-IEQTCHeiTOnAUC3IDQdzRAGj3jOAYNr9kBguI7MQAAZK3caezRrg0GxAb6Hchg4lxdZEI5Oq3iov/w/hnFWY9Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.59.0.tgz", + "integrity": "sha512-d3DuZi2KzTMjImrxoHIAODUZYoUUMsuUiY4SRRcJy6NJoZ6iIqWnJu9IScV9jXysyGMVuW+KNzZvBLOcpdl3Vg==", "cpu": [ "x64" ], @@ -838,9 +852,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.57.1.tgz", - "integrity": "sha512-F8sWbhZ7tyuEfsmOxwc2giKDQzN3+kuBLPwwZGyVkLlKGdV1nvnNwYD0fKQ8+XS6hp9nY7B+ZeK01EBUE7aHaw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.59.0.tgz", + "integrity": "sha512-t4ONHboXi/3E0rT6OZl1pKbl2Vgxf9vJfWgmUoCEVQVxhW6Cw/c8I6hbbu7DAvgp82RKiH7TpLwxnJeKv2pbsw==", "cpu": [ "arm" ], @@ -852,9 +866,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.57.1.tgz", - "integrity": "sha512-rGfNUfn0GIeXtBP1wL5MnzSj98+PZe/AXaGBCRmT0ts80lU5CATYGxXukeTX39XBKsxzFpEeK+Mrp9faXOlmrw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.59.0.tgz", + "integrity": "sha512-CikFT7aYPA2ufMD086cVORBYGHffBo4K8MQ4uPS/ZnY54GKj36i196u8U+aDVT2LX4eSMbyHtyOh7D7Zvk2VvA==", "cpu": [ "arm" ], @@ -866,9 +880,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.57.1.tgz", - "integrity": "sha512-MMtej3YHWeg/0klK2Qodf3yrNzz6CGjo2UntLvk2RSPlhzgLvYEB3frRvbEF2wRKh1Z2fDIg9KRPe1fawv7C+g==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.59.0.tgz", + "integrity": "sha512-jYgUGk5aLd1nUb1CtQ8E+t5JhLc9x5WdBKew9ZgAXg7DBk0ZHErLHdXM24rfX+bKrFe+Xp5YuJo54I5HFjGDAA==", "cpu": [ "arm64" ], @@ -880,9 +894,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.57.1.tgz", - "integrity": "sha512-1a/qhaaOXhqXGpMFMET9VqwZakkljWHLmZOX48R0I/YLbhdxr1m4gtG1Hq7++VhVUmf+L3sTAf9op4JlhQ5u1Q==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.59.0.tgz", + "integrity": "sha512-peZRVEdnFWZ5Bh2KeumKG9ty7aCXzzEsHShOZEFiCQlDEepP1dpUl/SrUNXNg13UmZl+gzVDPsiCwnV1uI0RUA==", "cpu": [ "arm64" ], @@ -894,9 +908,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.57.1.tgz", - "integrity": "sha512-QWO6RQTZ/cqYtJMtxhkRkidoNGXc7ERPbZN7dVW5SdURuLeVU7lwKMpo18XdcmpWYd0qsP1bwKPf7DNSUinhvA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.59.0.tgz", + "integrity": "sha512-gbUSW/97f7+r4gHy3Jlup8zDG190AuodsWnNiXErp9mT90iCy9NKKU0Xwx5k8VlRAIV2uU9CsMnEFg/xXaOfXg==", "cpu": [ "loong64" ], @@ -908,9 +922,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.57.1.tgz", - "integrity": "sha512-xpObYIf+8gprgWaPP32xiN5RVTi/s5FCR+XMXSKmhfoJjrpRAjCuuqQXyxUa/eJTdAE6eJ+KDKaoEqjZQxh3Gw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.59.0.tgz", + "integrity": "sha512-yTRONe79E+o0FWFijasoTjtzG9EBedFXJMl888NBEDCDV9I2wGbFFfJQQe63OijbFCUZqxpHz1GzpbtSFikJ4Q==", "cpu": [ "loong64" ], @@ -922,9 +936,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.57.1.tgz", - "integrity": "sha512-4BrCgrpZo4hvzMDKRqEaW1zeecScDCR+2nZ86ATLhAoJ5FQ+lbHVD3ttKe74/c7tNT9c6F2viwB3ufwp01Oh2w==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.59.0.tgz", + "integrity": "sha512-sw1o3tfyk12k3OEpRddF68a1unZ5VCN7zoTNtSn2KndUE+ea3m3ROOKRCZxEpmT9nsGnogpFP9x6mnLTCaoLkA==", "cpu": [ "ppc64" ], @@ -936,9 +950,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.57.1.tgz", - "integrity": "sha512-NOlUuzesGauESAyEYFSe3QTUguL+lvrN1HtwEEsU2rOwdUDeTMJdO5dUYl/2hKf9jWydJrO9OL/XSSf65R5+Xw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.59.0.tgz", + "integrity": "sha512-+2kLtQ4xT3AiIxkzFVFXfsmlZiG5FXYW7ZyIIvGA7Bdeuh9Z0aN4hVyXS/G1E9bTP/vqszNIN/pUKCk/BTHsKA==", "cpu": [ "ppc64" ], @@ -950,9 +964,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.57.1.tgz", - "integrity": "sha512-ptA88htVp0AwUUqhVghwDIKlvJMD/fmL/wrQj99PRHFRAG6Z5nbWoWG4o81Nt9FT+IuqUQi+L31ZKAFeJ5Is+A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.59.0.tgz", + "integrity": "sha512-NDYMpsXYJJaj+I7UdwIuHHNxXZ/b/N2hR15NyH3m2qAtb/hHPA4g4SuuvrdxetTdndfj9b1WOmy73kcPRoERUg==", "cpu": [ "riscv64" ], @@ -964,9 +978,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.57.1.tgz", - "integrity": "sha512-S51t7aMMTNdmAMPpBg7OOsTdn4tySRQvklmL3RpDRyknk87+Sp3xaumlatU+ppQ+5raY7sSTcC2beGgvhENfuw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.59.0.tgz", + "integrity": "sha512-nLckB8WOqHIf1bhymk+oHxvM9D3tyPndZH8i8+35p/1YiVoVswPid2yLzgX7ZJP0KQvnkhM4H6QZ5m0LzbyIAg==", "cpu": [ "riscv64" ], @@ -978,9 +992,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.57.1.tgz", - "integrity": "sha512-Bl00OFnVFkL82FHbEqy3k5CUCKH6OEJL54KCyx2oqsmZnFTR8IoNqBF+mjQVcRCT5sB6yOvK8A37LNm/kPJiZg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.59.0.tgz", + "integrity": "sha512-oF87Ie3uAIvORFBpwnCvUzdeYUqi2wY6jRFWJAy1qus/udHFYIkplYRW+wo+GRUP4sKzYdmE1Y3+rY5Gc4ZO+w==", "cpu": [ "s390x" ], @@ -992,9 +1006,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.57.1.tgz", - "integrity": "sha512-ABca4ceT4N+Tv/GtotnWAeXZUZuM/9AQyCyKYyKnpk4yoA7QIAuBt6Hkgpw8kActYlew2mvckXkvx0FfoInnLg==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.59.0.tgz", + "integrity": "sha512-3AHmtQq/ppNuUspKAlvA8HtLybkDflkMuLK4DPo77DfthRb71V84/c4MlWJXixZz4uruIH4uaa07IqoAkG64fg==", "cpu": [ "x64" ], @@ -1006,9 +1020,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.57.1.tgz", - "integrity": "sha512-HFps0JeGtuOR2convgRRkHCekD7j+gdAuXM+/i6kGzQtFhlCtQkpwtNzkNj6QhCDp7DRJ7+qC/1Vg2jt5iSOFw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.59.0.tgz", + "integrity": "sha512-2UdiwS/9cTAx7qIUZB/fWtToJwvt0Vbo0zmnYt7ED35KPg13Q0ym1g442THLC7VyI6JfYTP4PiSOWyoMdV2/xg==", "cpu": [ "x64" ], @@ -1020,9 +1034,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.57.1.tgz", - "integrity": "sha512-H+hXEv9gdVQuDTgnqD+SQffoWoc0Of59AStSzTEj/feWTBAnSfSD3+Dql1ZruJQxmykT/JVY0dE8Ka7z0DH1hw==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.59.0.tgz", + "integrity": "sha512-M3bLRAVk6GOwFlPTIxVBSYKUaqfLrn8l0psKinkCFxl4lQvOSz8ZrKDz2gxcBwHFpci0B6rttydI4IpS4IS/jQ==", "cpu": [ "x64" ], @@ -1034,9 +1048,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.57.1.tgz", - "integrity": "sha512-4wYoDpNg6o/oPximyc/NG+mYUejZrCU2q+2w6YZqrAs2UcNUChIZXjtafAiiZSUc7On8v5NyNj34Kzj/Ltk6dQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.59.0.tgz", + "integrity": "sha512-tt9KBJqaqp5i5HUZzoafHZX8b5Q2Fe7UjYERADll83O4fGqJ49O1FsL6LpdzVFQcpwvnyd0i+K/VSwu/o/nWlA==", "cpu": [ "arm64" ], @@ -1048,9 +1062,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.57.1.tgz", - "integrity": "sha512-O54mtsV/6LW3P8qdTcamQmuC990HDfR71lo44oZMZlXU4tzLrbvTii87Ni9opq60ds0YzuAlEr/GNwuNluZyMQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.59.0.tgz", + "integrity": "sha512-V5B6mG7OrGTwnxaNUzZTDTjDS7F75PO1ae6MJYdiMu60sq0CqN5CVeVsbhPxalupvTX8gXVSU9gq+Rx1/hvu6A==", "cpu": [ "arm64" ], @@ -1062,9 +1076,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.57.1.tgz", - "integrity": "sha512-P3dLS+IerxCT/7D2q2FYcRdWRl22dNbrbBEtxdWhXrfIMPP9lQhb5h4Du04mdl5Woq05jVCDPCMF7Ub0NAjIew==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.59.0.tgz", + "integrity": "sha512-UKFMHPuM9R0iBegwzKF4y0C4J9u8C6MEJgFuXTBerMk7EJ92GFVFYBfOZaSGLu6COf7FxpQNqhNS4c4icUPqxA==", "cpu": [ "ia32" ], @@ -1076,9 +1090,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.57.1.tgz", - "integrity": "sha512-VMBH2eOOaKGtIJYleXsi2B8CPVADrh+TyNxJ4mWPnKfLB/DBUmzW+5m1xUrcwWoMfSLagIRpjUFeW5CO5hyciQ==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.59.0.tgz", + "integrity": "sha512-laBkYlSS1n2L8fSo1thDNGrCTQMmxjYY5G0WFWjFFYZkKPjsMBsgJfGf4TLxXrF6RyhI60L8TMOjBMvXiTcxeA==", "cpu": [ "x64" ], @@ -1090,9 +1104,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.57.1.tgz", - "integrity": "sha512-mxRFDdHIWRxg3UfIIAwCm6NzvxG0jDX/wBN6KsQFTvKFqqg9vTrWUE68qEjHt19A5wwx5X5aUi2zuZT7YR0jrA==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.59.0.tgz", + "integrity": "sha512-2HRCml6OztYXyJXAvdDXPKcawukWY2GpR5/nxKp4iBgiO3wcoEGkAaqctIbZcNB6KlUQBIqt8VYkNSj2397EfA==", "cpu": [ "x64" ], @@ -1160,17 +1174,17 @@ } }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.0.tgz", - "integrity": "sha512-lRyPDLzNCuae71A3t9NEINBiTn7swyOhvUj3MyUOxb8x6g6vPEFoOU+ZRmGMusNC3X3YMhqMIX7i8ShqhT74Pw==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.56.1.tgz", + "integrity": "sha512-Jz9ZztpB37dNC+HU2HI28Bs9QXpzCz+y/twHOwhyrIRdbuVDxSytJNDl6z/aAKlaRIwC7y8wJdkBv7FxYGgi0A==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.56.0", - "@typescript-eslint/type-utils": "8.56.0", - "@typescript-eslint/utils": "8.56.0", - "@typescript-eslint/visitor-keys": "8.56.0", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/type-utils": "8.56.1", + "@typescript-eslint/utils": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.4.0" @@ -1183,22 +1197,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.56.0", + "@typescript-eslint/parser": "^8.56.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.0.tgz", - "integrity": "sha512-IgSWvLobTDOjnaxAfDTIHaECbkNlAlKv2j5SjpB2v7QHKv1FIfjwMy8FsDbVfDX/KjmCmYICcw7uGaXLhtsLNg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.56.1.tgz", + "integrity": "sha512-klQbnPAAiGYFyI02+znpBRLyjL4/BrBd0nyWkdC0s/6xFLkXYQ8OoRrSkqacS1ddVxf/LDyODIKbQ5TgKAf/Fg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.56.0", - "@typescript-eslint/types": "8.56.0", - "@typescript-eslint/typescript-estree": "8.56.0", - "@typescript-eslint/visitor-keys": "8.56.0", + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3" }, "engines": { @@ -1214,14 +1228,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.0.tgz", - "integrity": "sha512-M3rnyL1vIQOMeWxTWIW096/TtVP+8W3p/XnaFflhmcFp+U4zlxUxWj4XwNs6HbDeTtN4yun0GNTTDBw/SvufKg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.56.1.tgz", + "integrity": "sha512-TAdqQTzHNNvlVFfR+hu2PDJrURiwKsUvxFn1M0h95BB8ah5jejas08jUWG4dBA68jDMI988IvtfdAI53JzEHOQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.56.0", - "@typescript-eslint/types": "^8.56.0", + "@typescript-eslint/tsconfig-utils": "^8.56.1", + "@typescript-eslint/types": "^8.56.1", "debug": "^4.4.3" }, "engines": { @@ -1236,14 +1250,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.0.tgz", - "integrity": "sha512-7UiO/XwMHquH+ZzfVCfUNkIXlp/yQjjnlYUyYz7pfvlK3/EyyN6BK+emDmGNyQLBtLGaYrTAI6KOw8tFucWL2w==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.56.1.tgz", + "integrity": "sha512-YAi4VDKcIZp0O4tz/haYKhmIDZFEUPOreKbfdAN3SzUDMcPhJ8QI99xQXqX+HoUVq8cs85eRKnD+rne2UAnj2w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.0", - "@typescript-eslint/visitor-keys": "8.56.0" + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1254,9 +1268,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.0.tgz", - "integrity": "sha512-bSJoIIt4o3lKXD3xmDh9chZcjCz5Lk8xS7Rxn+6l5/pKrDpkCwtQNQQwZ2qRPk7TkUYhrq3WPIHXOXlbXP0itg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.56.1.tgz", + "integrity": "sha512-qOtCYzKEeyr3aR9f28mPJqBty7+DBqsdd63eO0yyDwc6vgThj2UjWfJIcsFeSucYydqcuudMOprZ+x1SpF3ZuQ==", "dev": true, "license": "MIT", "engines": { @@ -1271,15 +1285,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.0.tgz", - "integrity": "sha512-qX2L3HWOU2nuDs6GzglBeuFXviDODreS58tLY/BALPC7iu3Fa+J7EOTwnX9PdNBxUI7Uh0ntP0YWGnxCkXzmfA==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.56.1.tgz", + "integrity": "sha512-yB/7dxi7MgTtGhZdaHCemf7PuwrHMenHjmzgUW1aJpO+bBU43OycnM3Wn+DdvDO/8zzA9HlhaJ0AUGuvri4oGg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.0", - "@typescript-eslint/typescript-estree": "8.56.0", - "@typescript-eslint/utils": "8.56.0", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1", "debug": "^4.4.3", "ts-api-utils": "^2.4.0" }, @@ -1296,9 +1310,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.0.tgz", - "integrity": "sha512-DBsLPs3GsWhX5HylbP9HNG15U0bnwut55Lx12bHB9MpXxQ+R5GC8MwQe+N1UFXxAeQDvEsEDY6ZYwX03K7Z6HQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.56.1.tgz", + "integrity": "sha512-dbMkdIUkIkchgGDIv7KLUpa0Mda4IYjo4IAMJUZ+3xNoUXxMsk9YtKpTHSChRS85o+H9ftm51gsK1dZReY9CVw==", "dev": true, "license": "MIT", "engines": { @@ -1310,18 +1324,18 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.0.tgz", - "integrity": "sha512-ex1nTUMWrseMltXUHmR2GAQ4d+WjkZCT4f+4bVsps8QEdh0vlBsaCokKTPlnqBFqqGaxilDNJG7b8dolW2m43Q==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.56.1.tgz", + "integrity": "sha512-qzUL1qgalIvKWAf9C1HpvBjif+Vm6rcT5wZd4VoMb9+Km3iS3Cv9DY6dMRMDtPnwRAFyAi7YXJpTIEXLvdfPxg==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.56.0", - "@typescript-eslint/tsconfig-utils": "8.56.0", - "@typescript-eslint/types": "8.56.0", - "@typescript-eslint/visitor-keys": "8.56.0", + "@typescript-eslint/project-service": "8.56.1", + "@typescript-eslint/tsconfig-utils": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/visitor-keys": "8.56.1", "debug": "^4.4.3", - "minimatch": "^9.0.5", + "minimatch": "^10.2.2", "semver": "^7.7.3", "tinyglobby": "^0.2.15", "ts-api-utils": "^2.4.0" @@ -1338,16 +1352,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.0.tgz", - "integrity": "sha512-RZ3Qsmi2nFGsS+n+kjLAYDPVlrzf7UhTffrDIKr+h2yzAlYP/y5ZulU0yeDEPItos2Ph46JAL5P/On3pe7kDIQ==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.56.1.tgz", + "integrity": "sha512-HPAVNIME3tABJ61siYlHzSWCGtOoeP2RTIaHXFMPqjrQKCGB9OgUVdiNgH7TJS2JNIQ5qQ4RsAUDuGaGme/KOA==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.56.0", - "@typescript-eslint/types": "8.56.0", - "@typescript-eslint/typescript-estree": "8.56.0" + "@typescript-eslint/scope-manager": "8.56.1", + "@typescript-eslint/types": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -1362,13 +1376,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.0.tgz", - "integrity": "sha512-q+SL+b+05Ud6LbEE35qe4A99P+htKTKVbyiNEe45eCbJFyh/HVK9QXwlrbz+Q4L8SOW4roxSVwXYj4DMBT7Ieg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.56.1.tgz", + "integrity": "sha512-KiROIzYdEV85YygXw6BI/Dx4fnBlFQu6Mq4QE4MOH9fFnhohw6wX/OAvDY2/C+ut0I3RSPKenvZJIVYqJNkhEw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.56.0", + "@typescript-eslint/types": "8.56.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -1380,9 +1394,9 @@ } }, "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.0.tgz", - "integrity": "sha512-A0XeIi7CXU7nPlfHS9loMYEKxUaONu/hTEzHTGba9Huu94Cq1hPivf+DE5erJozZOky0LfvXAyrV/tcswpLI0Q==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", + "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", "dev": true, "license": "Apache-2.0", "engines": { @@ -1535,9 +1549,9 @@ } }, "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", + "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "dev": true, "license": "MIT", "bin": { @@ -1558,9 +1572,9 @@ } }, "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.14.0.tgz", + "integrity": "sha512-IWrosm/yrn43eiKqkfkHis7QioDleaXQHdDVPKg0FSwwd/DuvyX79TZnFOnYpB7dcsFAMmtFztZuXPDvSePkFw==", "dev": true, "license": "MIT", "dependencies": { @@ -1782,20 +1796,26 @@ } }, "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } }, "node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0" + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" } }, "node_modules/bundle-require": { @@ -2401,9 +2421,9 @@ } }, "node_modules/eslint": { - "version": "9.39.2", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz", - "integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==", + "version": "9.39.3", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.3.tgz", + "integrity": "sha512-VmQ+sifHUbI/IcSopBCF/HO3YiHQx/AVd3UVyYL6weuwW+HvON9VYn5l6Zl1WZzPWXPNZrSQpxwkkZ/VuvJZzg==", "dev": true, "license": "MIT", "dependencies": { @@ -2413,7 +2433,7 @@ "@eslint/config-helpers": "^0.4.2", "@eslint/core": "^0.17.0", "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.39.2", + "@eslint/js": "9.39.3", "@eslint/plugin-kit": "^0.4.1", "@humanfs/node": "^0.16.6", "@humanwhocodes/module-importer": "^1.0.1", @@ -2544,6 +2564,13 @@ "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" } }, + "node_modules/eslint-plugin-import/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint-plugin-import/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2566,9 +2593,9 @@ } }, "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "license": "ISC", "dependencies": { @@ -2618,6 +2645,13 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/eslint/node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, "node_modules/eslint/node_modules/brace-expansion": { "version": "1.1.12", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", @@ -2653,9 +2687,9 @@ } }, "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.4.tgz", + "integrity": "sha512-twmL+S8+7yIsE9wsqgzU3E8/LumN3M3QELrBZ20OdmQ9jB2JvW5oZtBEmft84k/Gs5CG9mqtWc6Y9vW+JEzGxw==", "dev": true, "license": "ISC", "dependencies": { @@ -3831,16 +3865,16 @@ } }, "node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "10.2.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.3.tgz", + "integrity": "sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==", "dev": true, - "license": "ISC", + "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -4403,9 +4437,9 @@ } }, "node_modules/rollup": { - "version": "4.57.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.57.1.tgz", - "integrity": "sha512-oQL6lgK3e2QZeQ7gcgIkS2YZPg5slw37hYufJ3edKlfQSGGm8ICoxswK15ntSzF/a8+h7ekRy7k7oWc3BQ7y8A==", + "version": "4.59.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.59.0.tgz", + "integrity": "sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==", "dev": true, "license": "MIT", "dependencies": { @@ -4419,31 +4453,31 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.57.1", - "@rollup/rollup-android-arm64": "4.57.1", - "@rollup/rollup-darwin-arm64": "4.57.1", - "@rollup/rollup-darwin-x64": "4.57.1", - "@rollup/rollup-freebsd-arm64": "4.57.1", - "@rollup/rollup-freebsd-x64": "4.57.1", - "@rollup/rollup-linux-arm-gnueabihf": "4.57.1", - "@rollup/rollup-linux-arm-musleabihf": "4.57.1", - "@rollup/rollup-linux-arm64-gnu": "4.57.1", - "@rollup/rollup-linux-arm64-musl": "4.57.1", - "@rollup/rollup-linux-loong64-gnu": "4.57.1", - "@rollup/rollup-linux-loong64-musl": "4.57.1", - "@rollup/rollup-linux-ppc64-gnu": "4.57.1", - "@rollup/rollup-linux-ppc64-musl": "4.57.1", - "@rollup/rollup-linux-riscv64-gnu": "4.57.1", - "@rollup/rollup-linux-riscv64-musl": "4.57.1", - "@rollup/rollup-linux-s390x-gnu": "4.57.1", - "@rollup/rollup-linux-x64-gnu": "4.57.1", - "@rollup/rollup-linux-x64-musl": "4.57.1", - "@rollup/rollup-openbsd-x64": "4.57.1", - "@rollup/rollup-openharmony-arm64": "4.57.1", - "@rollup/rollup-win32-arm64-msvc": "4.57.1", - "@rollup/rollup-win32-ia32-msvc": "4.57.1", - "@rollup/rollup-win32-x64-gnu": "4.57.1", - "@rollup/rollup-win32-x64-msvc": "4.57.1", + "@rollup/rollup-android-arm-eabi": "4.59.0", + "@rollup/rollup-android-arm64": "4.59.0", + "@rollup/rollup-darwin-arm64": "4.59.0", + "@rollup/rollup-darwin-x64": "4.59.0", + "@rollup/rollup-freebsd-arm64": "4.59.0", + "@rollup/rollup-freebsd-x64": "4.59.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.59.0", + "@rollup/rollup-linux-arm-musleabihf": "4.59.0", + "@rollup/rollup-linux-arm64-gnu": "4.59.0", + "@rollup/rollup-linux-arm64-musl": "4.59.0", + "@rollup/rollup-linux-loong64-gnu": "4.59.0", + "@rollup/rollup-linux-loong64-musl": "4.59.0", + "@rollup/rollup-linux-ppc64-gnu": "4.59.0", + "@rollup/rollup-linux-ppc64-musl": "4.59.0", + "@rollup/rollup-linux-riscv64-gnu": "4.59.0", + "@rollup/rollup-linux-riscv64-musl": "4.59.0", + "@rollup/rollup-linux-s390x-gnu": "4.59.0", + "@rollup/rollup-linux-x64-gnu": "4.59.0", + "@rollup/rollup-linux-x64-musl": "4.59.0", + "@rollup/rollup-openbsd-x64": "4.59.0", + "@rollup/rollup-openharmony-arm64": "4.59.0", + "@rollup/rollup-win32-arm64-msvc": "4.59.0", + "@rollup/rollup-win32-ia32-msvc": "4.59.0", + "@rollup/rollup-win32-x64-gnu": "4.59.0", + "@rollup/rollup-win32-x64-msvc": "4.59.0", "fsevents": "~2.3.2" } }, @@ -5158,16 +5192,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.0.tgz", - "integrity": "sha512-c7toRLrotJ9oixgdW7liukZpsnq5CZ7PuKztubGYlNppuTqhIoWfhgHo/7EU0v06gS2l/x0i2NEFK1qMIf0rIg==", + "version": "8.56.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.56.1.tgz", + "integrity": "sha512-U4lM6pjmBX7J5wk4szltF7I1cGBHXZopnAXCMXb3+fZ3B/0Z3hq3wS/CCUB2NZBNAExK92mCU2tEohWuwVMsDQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.56.0", - "@typescript-eslint/parser": "8.56.0", - "@typescript-eslint/typescript-estree": "8.56.0", - "@typescript-eslint/utils": "8.56.0" + "@typescript-eslint/eslint-plugin": "8.56.1", + "@typescript-eslint/parser": "8.56.1", + "@typescript-eslint/typescript-estree": "8.56.1", + "@typescript-eslint/utils": "8.56.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" From 6dc117e913df059c71315782d93217eb76446b47 Mon Sep 17 00:00:00 2001 From: Viacheslav Rudkovskyi Date: Wed, 25 Feb 2026 14:24:36 +0200 Subject: [PATCH 6/6] fix test --- .../converters/itemToTransaction.spec.ts | 4 ++-- test/specs/entities/License.spec.ts | 2 +- test/specs/entities/Transaction.spec.ts | 4 ++-- .../specs/services/TransactionService.spec.ts | 20 +++++++++---------- 4 files changed, 15 insertions(+), 15 deletions(-) diff --git a/test/specs/converters/itemToTransaction.spec.ts b/test/specs/converters/itemToTransaction.spec.ts index 827d0ad..134d22f 100644 --- a/test/specs/converters/itemToTransaction.spec.ts +++ b/test/specs/converters/itemToTransaction.spec.ts @@ -23,8 +23,8 @@ describe('itemToTransaction converter', () => { { name: 'grandTotal', value: '10.99' }, { name: 'discount', value: '2.99' }, { name: 'currency', value: 'EUR' }, - { name: 'dateCreated', value: '2025-04-23T13:51:14.024Z' }, - { name: 'dateClosed', value: '2025-04-24T13:51:14.024Z' }, + { name: 'datecreated', value: '2025-04-23T13:51:14.024Z' }, + { name: 'dateclosed', value: '2025-04-24T13:51:14.024Z' }, { name: 'paymentMethod', value: 'PAYPAL' }, { name: 'customProperty', value: 'X' }, { name: 'inUse', value: 'true' }, diff --git a/test/specs/entities/License.spec.ts b/test/specs/entities/License.spec.ts index 7bfa7e5..c395ed1 100644 --- a/test/specs/entities/License.spec.ts +++ b/test/specs/entities/License.spec.ts @@ -287,7 +287,7 @@ describe('License Entity', () => { timeVolume: '50', timeVolumePeriod: TimeVolumePeriod.DAY, startDate: 'now', - parentfeature: 'PARENT123', + parentFeature: 'PARENT123', }); }); }); diff --git a/test/specs/entities/Transaction.spec.ts b/test/specs/entities/Transaction.spec.ts index ac34065..c3c3d53 100644 --- a/test/specs/entities/Transaction.spec.ts +++ b/test/specs/entities/Transaction.spec.ts @@ -271,8 +271,8 @@ describe('Transaction entity', () => { grandTotal: '12.5', discount: '2.2', currency: 'EUR', - dateCreated: '2024-01-03T12:00:00.000Z', - dateClosed: '2024-01-04T12:00:00.000Z', + datecreated: '2024-01-03T12:00:00.000Z', + dateclosed: '2024-01-04T12:00:00.000Z', paymentMethod: PaymentMethodEnum.PAYPAL, }); }); diff --git a/test/specs/services/TransactionService.spec.ts b/test/specs/services/TransactionService.spec.ts index b7eef82..34ebaf4 100644 --- a/test/specs/services/TransactionService.spec.ts +++ b/test/specs/services/TransactionService.spec.ts @@ -47,8 +47,8 @@ describe('TransactionService', () => { grandTotal: '10.99', discount: '2.99', currency: 'EUR', - dateCreated: '2025-04-23T13:51:14.024Z', - dateClosed: '2025-04-24T13:51:14.024Z', + datecreated: '2025-04-23T13:51:14.024Z', + dateclosed: '2025-04-24T13:51:14.024Z', paymentMethod: 'PAYPAL', licenseTransactionJoin: [ { licenseNumber: 'L1', transactionNumber: 'T1' }, @@ -185,8 +185,8 @@ describe('TransactionService', () => { grandTotal: '10.99', discount: '2.99', currency: 'EUR', - dateCreated: '2025-04-23T13:51:14.024Z', - dateClosed: '2025-04-24T13:51:14.024Z', + datecreated: '2025-04-23T13:51:14.024Z', + dateclosed: '2025-04-24T13:51:14.024Z', paymentMethod: 'PAYPAL', licenseTransactionJoin: [ { licenseNumber: 'L1', transactionNumber: 'T1' }, @@ -216,8 +216,8 @@ describe('TransactionService', () => { grandTotal: '10.99', discount: '2.99', currency: 'EUR', - dateCreated: '2025-04-23T13:51:14.024Z', - dateClosed: '2025-04-24T13:51:14.024Z', + datecreated: '2025-04-23T13:51:14.024Z', + dateclosed: '2025-04-24T13:51:14.024Z', paymentMethod: 'PAYPAL', customProperty: 'X', }, @@ -260,8 +260,8 @@ describe('TransactionService', () => { grandTotal: '10.99', discount: '2.99', currency: 'EUR', - dateCreated: '2025-04-23T13:51:14.024Z', - dateClosed: '2025-04-24T13:51:14.024Z', + datecreated: '2025-04-23T13:51:14.024Z', + dateclosed: '2025-04-24T13:51:14.024Z', paymentMethod: 'PAYPAL', licenseTransactionJoin: [ { licenseNumber: 'L1', transactionNumber: 'T1' }, @@ -289,8 +289,8 @@ describe('TransactionService', () => { grandTotal: '10.99', discount: '2.99', currency: 'EUR', - dateCreated: '2025-04-23T13:51:14.024Z', - dateClosed: '2025-04-24T13:51:14.024Z', + datecreated: '2025-04-23T13:51:14.024Z', + dateclosed: '2025-04-24T13:51:14.024Z', paymentMethod: 'PAYPAL', customProperty: 'X', },