netlicensing-client 2.0.2 → 2.0.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +11 -7
- package/dist/index.d.ts +11 -7
- package/dist/index.global.js +6 -6
- package/dist/index.global.js.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +1 -1
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.mjs.map
CHANGED
|
@@ -1 +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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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<string, unknown> = {};\n properties?.forEach(({ name, value }) => {\n result[name] = cast(value);\n });\n return result;\n};\n\nconst extractLists = (lists?: List[]) => {\n const result: Record<string, unknown[]> = {};\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 = <T extends object = Record<string, unknown>>(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 = <T extends object, K extends keyof T>(obj: T, key: K): boolean => {\n return Object.hasOwn(obj, key);\n};\n\nexport const set = <T extends object, K extends keyof T>(obj: T, key: K, value: T[K]): void => {\n obj[key] = value;\n};\n\nexport const get = <T extends object, K extends keyof T, D = undefined>(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<string, string>, 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 <netlicensing@labs64.com>\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<string, string>) with converted property values from the object.\n */\nexport default <T extends object>(obj: T, options: { ignore?: string[] } = {}): Record<string, string> => {\n const map: Record<string, string> = {};\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 <netlicensing@labs64.com>\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 <P extends Proto, T extends object, M extends object>(\n props: T,\n methods: M,\n proto: P = {} as P,\n options?: { set?: PropSetEventListener<T>; get?: PropGetEventListener<T> },\n) {\n const listeners: { set: PropSetEventListener<T>[]; get: PropGetEventListener<T>[] } = {\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<T> = {\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<T, M>;\n};\n\nexport default defineEntity;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: BundleProps<T> = {} as BundleProps<T>): BundleEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setProductNumber(number: string) {\n set(props, 'productNumber', number);\n },\n\n getProductNumber<D = undefined>(def?: D): string | D {\n return get(props, 'productNumber', 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<D = undefined>(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 getStaleLicenseTemplateNumbers<D = undefined>(this: void, def?: D): string[] | D {\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\n },\n\n serialize(this: void): Record<string, string> {\n const cast: Record<string, string> = {};\n\n if (props.licenseTemplateNumbers) {\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\n }\n\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\n },\n };\n\n return defineEntity(props as BundleProps<T>, methods, Bundle);\n};\n\nexport default Bundle;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = BundleProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item);\n\n const { licenseTemplateNumbers } = props;\n\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\n }\n\n return Bundle<T>(props as BundleProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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<CountryProps>(item));\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: LicenseProps<T> = {} as LicenseProps<T>): LicenseEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps<T>, methods, License);\n};\n\nexport default License;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(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<T>(props as LicenseProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: LicenseeProps<T> = {} as LicenseeProps<T>): LicenseeEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): boolean | D {\n return get(props, 'markedForTransfer', def) as boolean | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseeProps<T>, methods, Licensee);\n};\n\nexport default Licensee;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseeProps>(item?: Item) => Licensee<T>(itemToObject<T>(item));\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 {\n LicenseTemplateMethods,\n LicenseTemplateProps,\n LicenseTemplateEntity,\n} 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 <T extends object>(\n properties: LicenseTemplateProps<T> = {} as LicenseTemplateProps<T>,\n): LicenseTemplateEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): boolean | D {\n return get(props, 'hideLicenses', def) as boolean | D;\n },\n\n setProductModuleNumber(this: void, productModuleNumber: string): void {\n set(props, 'productModuleNumber', productModuleNumber);\n },\n\n getProductModuleNumber<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseTemplateProps<T>, methods, LicenseTemplate);\n};\n\nexport default LicenseTemplate;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseTemplateProps>(item?: Item) => LicenseTemplate<T>(itemToObject<T>(item));\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(\n properties: NotificationProps<T> = {} as NotificationProps<T>,\n): NotificationEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'endpoint', def) as string | D;\n },\n\n serialize(): Record<string, string> {\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<T>, methods, Notification);\n};\n\nexport default Notification;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = NotificationProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item);\n\n const { events } = props;\n\n if (events && typeof events === 'string') {\n props.events = events.split(',');\n }\n\n return Notification<T>(props as NotificationProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(\n properties: PaymentMethodProps<T> = {} as PaymentMethodProps<T>,\n): PaymentMethodEntity<T> {\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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n };\n\n return defineEntity(props as PaymentMethodProps<T>, methods, PaymentMethod);\n};\n\nexport default PaymentMethod;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = PaymentMethodProps>(item?: Item) => PaymentMethod<T>(itemToObject<T>(item));\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = object>(\n properties: ProductProps<T> = {} as ProductProps<T>,\n): ProductEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(def?: D): ProductDiscountEntity[] | D {\n return this.getDiscounts(def);\n },\n\n serialize(): Record<string, string | string[]> {\n const map: Record<string, string | string[]> = 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<T>, methods, Product);\n};\n\nexport default Product;\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\nexport default class NlicError<T = unknown, D = unknown> extends AxiosError<T, D> {\n isNlicError = true;\n\n constructor(\n message?: string,\n code?: string,\n config?: InternalAxiosRequestConfig<D>,\n request?: unknown,\n response?: AxiosResponse<T, D>,\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 <netlicensing@labs64.com>\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<D>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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 <T extends object = ProductProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(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<T>(props as ProductProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 {\n ProductModuleEntity,\n ProductModuleMethods,\n ProductModuleProps,\n} 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 <T extends object = object>(\n properties: ProductModuleProps<T> = {} as ProductModuleProps<T>,\n): ProductModuleEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): LicensingModelValues | D {\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as ProductModuleProps<T>, methods, ProductModule);\n};\n\nexport default ProductModule;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = ProductModuleProps>(item?: Item) => ProductModule<T>(itemToObject<T>(item));\n","/**\n * Token\n *\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = object>(properties: TokenProps<T> = {} as TokenProps<T>): TokenEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'cancelURLTitle', def) as string | D;\n },\n\n getShopURL<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'shopURL', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['shopURL'] });\n },\n };\n\n return defineEntity(props as TokenProps<T>, methods, Token);\n};\n\nexport default Token;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = TokenProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item);\n\n const { expirationTime } = props;\n\n if (expirationTime && typeof expirationTime === 'string') {\n props.expirationTime = new Date(expirationTime);\n }\n\n return Token<T>(props as TokenProps<T>);\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <T extends object>(\n properties: TransactionProps<T> = {} as TransactionProps<T>,\n): TransactionEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\n },\n\n serialize(this: void) {\n const clone: Record<string, unknown> = {...props};\n\n clone.datecreated = props.dateCreated;\n clone.dateclosed = props.dateClosed\n\n delete clone.dateCreated;\n delete clone.dateClosed;\n\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\n },\n };\n\n return defineEntity(props as TransactionProps<T>, methods, Transaction);\n};\n\nexport default Transaction;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = TransactionProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item);\n\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\n\n if (dateCreated && typeof dateCreated === 'string') {\n props.dateCreated = new Date(dateCreated);\n delete props.datecreated;\n }\n\n if (dateClosed && typeof dateClosed === 'string') {\n props.dateClosed = new Date(dateClosed);\n delete props.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<T>(props as TransactionProps<T>);\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\": \"2.0.1\",\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\": \"git+https://github.com/Labs64/NetLicensingClient-javascript.git\"\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.39.4\",\n \"@types/node\": \"^25.3.5\",\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.13.6\",\n \"eslint\": \"^9.39.4\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"prettier\": \"3.8.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"typescript-eslint\": \"^8.29.1\",\n \"vitest\": \"^3.2.4\"\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 <T extends Record<string, unknown>>(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<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => {\n const headers: Record<string, string> = {\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<string, unknown>);\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<NlicResponse> = 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<NlicResponse>,\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<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => request(context, 'get', endpoint, data, config);\n\nexport const post = (\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => request(context, 'post', endpoint, data, config);\n\nexport const del = (\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => 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<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return get(context, endpoint, data, config);\n },\n\n post(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return post(context, endpoint, data, config);\n },\n\n delete(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\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<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return request(context, method, endpoint, data, config);\n },\n\n toQueryString<T extends Record<string, unknown>>(this: void, data: T): string {\n return toQueryString(data);\n },\n};\n\nexport default service;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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, string | boolean | number>): 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<string, string> => {\n const result: Record<string, string> = {};\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <T extends object>(content: T, pagination?: Partial<ItemPagination>) {\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<T> = {\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<T>;\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 <netlicensing@labs64.com>\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<T extends object = BundleProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<BundleEntity<SavedBundleProps<T>>[]>> {\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<SavedBundleProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToBundle<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n bundle: BundleEntity<T>,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n number: string,\n bundle: BundleEntity<T>,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<AxiosResponse> {\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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n licenseeNumber: string,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>[]> {\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<SavedLicenseProps<T>>(v)) || [];\n },\n};\n\nexport default bundleService;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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<string, ProductModuleValidation>;\n ttl?: Date;\n\n constructor() {\n this.validations = {};\n }\n\n getValidators(): Record<string, ProductModuleValidation> {\n return this.validations;\n }\n\n setValidation(validation: ProductModuleValidation): this {\n this.validations[validation.productModuleNumber] = validation;\n return this;\n }\n\n getValidation<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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<T extends object = LicenseeProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseeEntity<SavedLicenseeProps<T>>[]>> {\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<SavedLicenseeProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicensee<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n productNumber: string,\n licensee: LicenseeEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n number: string,\n licensee: LicenseeEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<AxiosResponse<NlicResponse>> {\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<IValidationResults> {\n ensureNotEmpty(number, 'number');\n\n const data: Record<string, string | boolean> = {};\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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseEntity<SavedLicenseProps<T>>[]>> {\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<SavedLicenseProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicense<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n licenseeNumber: string | null,\n licenseTemplateNumber: string | null,\n transactionNumber: string | null,\n license: LicenseEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n transactionNumber: string | null,\n license: LicenseEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>[]>> {\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<SavedLicenseTemplateProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicenseTemplate<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n productModuleNumber: string | null,\n licenseTemplate: LicenseTemplateEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n number: string,\n licenseTemplate: LicenseTemplateEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = NotificationProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<NotificationEntity<SavedNotificationProps<T>>[]>> {\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<SavedNotificationProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToNotification<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n notification: NotificationEntity<T>,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n number: string,\n notification: NotificationEntity<T>,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<PaymentMethodEntity<SavedPaymentMethodProps<T>>> {\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<SavedPaymentMethodProps<T>>(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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<PaymentMethodEntity<SavedPaymentMethodProps<T>>[]>> {\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<SavedPaymentMethodProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToPaymentMethod<SavedPaymentMethodProps<T>>(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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n number: string,\n paymentMethod: PaymentMethodEntity<T>,\n config?: RequestConfig,\n ): Promise<PaymentMethodEntity<SavedPaymentMethodProps<T>>> {\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<SavedPaymentMethodProps<T>>(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 <netlicensing@labs64.com>\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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<ProductModuleEntity<SavedProductModuleProps<T>>[]>> {\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<SavedProductModuleProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProductModule<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n productNumber: string | null,\n productModule: ProductModuleEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n number: string,\n productModule: ProductModuleEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = ProductProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<ProductEntity<SavedProductProps<T>>[]>> {\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<SavedProductProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProduct<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n product: ProductEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n number: string,\n product: ProductEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = TokenProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<TokenEntity<SavedTokenProps<T>>> {\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<SavedTokenProps<T>>(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<T extends object = TokenProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<TokenEntity<SavedTokenProps<T>>[]>> {\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<SavedTokenProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToToken<SavedTokenProps<T>>(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<T extends object = TokenProps>(\n context: ContextInstance,\n token: TokenEntity<T>,\n config?: RequestConfig,\n ): Promise<TokenEntity<SavedTokenProps<T>>> {\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<SavedTokenProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = TransactionProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<TransactionEntity<SavedTransactionProps<T>>[]>> {\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<SavedTransactionProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToTransaction<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n transaction: TransactionEntity<T>,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n number: string,\n transaction: TransactionEntity<T>,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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 <netlicensing@labs64.com>\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<PageInstance<LicenseTypeValues[]>> {\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<PageInstance<LicensingModelValues[]>> {\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, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<CountryEntity[]>> {\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 <netlicensing@labs64.com>\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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<D = undefined>(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":"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,iEACT,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,UACf,mCAAoC,UACpC,4BAA6B,UAC7B,wBAAyB,UACzB,MAAS,UACT,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,GCrER,IAAMiB,EAAUC,GACd,OAAO,KAAKA,CAAM,EACtB,IAAKC,GAAQ,GAAGA,CAAG,IAA2B,OAAOD,EAAOC,CAAG,CAAC,CAAC,EAAE,EACnE,KAAK,GAAgB,EAGbC,GAAUF,GAA2C,CAChE,IAAMG,EAAiC,CAAC,EAExC,OAAAH,EAAO,MAAM,GAAgB,EAAE,QAASI,GAAM,CAC5C,GAAM,CAACC,EAAMC,CAAK,EAAIF,EAAE,MAAM,GAAqB,EACnDD,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","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"]}
|
|
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/utils/cast.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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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","const isBooleanString = (value: string): value is 'true' | 'false' => {\n return value === 'true' || value === 'false';\n};\n\nconst isNullString = (value: string): value is 'null' => {\n return value === 'null';\n};\n\nconst isJsonStructure = (value: string): boolean => {\n const trimmed = value.trim();\n\n return (\n (trimmed.startsWith('{') && trimmed.endsWith('}')) ||\n (trimmed.startsWith('[') && trimmed.endsWith(']'))\n );\n};\n\nconst isNumericString = (value: string): boolean => {\n const trimmed = value.trim();\n\n if (!trimmed) {\n return false;\n }\n\n const parsed = Number(trimmed);\n\n return Number.isFinite(parsed);\n};\n\nconst parseNumber = (value: string): number | string => {\n return isNumericString(value) ? Number(value) : value;\n};\n\nconst parseBoolean = (value: string): boolean | string => {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n return value;\n};\n\nconst parseNull = (value: string): null | string => {\n return value === 'null' ? null : value;\n};\n\nconst parseJson = (value: string): unknown => {\n if (!isJsonStructure(value)) {\n return value;\n }\n\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n};\n\nexport type CastType = 'auto' | 'string' | 'number' | 'boolean' | 'null' | 'json';\n\nconst parseAuto = (value: string): unknown => {\n if (isBooleanString(value)) {\n return value === 'true';\n }\n\n if (isNullString(value)) {\n return null;\n }\n\n if (isNumericString(value)) {\n return Number(value);\n }\n\n if (isJsonStructure(value)) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n\n return value;\n};\n\nexport const cast = (value: string, type: CastType = 'auto'): unknown => {\n switch (type) {\n case 'string':\n return value;\n\n case 'number':\n return parseNumber(value);\n\n case 'boolean':\n return parseBoolean(value);\n\n case 'null':\n return parseNull(value);\n\n case 'json':\n return parseJson(value);\n\n case 'auto':\n default:\n return parseAuto(value);\n }\n};\n\nexport default cast;\n","import { Item, List } from '@/types/api/response';\nimport { CastType } from '@/types/utils/cast';\nimport cast from '@/utils/cast';\n\nexport type ItemToObjectCastMap = Record<string, CastType>;\n\nconst extractProperties = (properties?: { name: string; value: string }[], castMap: ItemToObjectCastMap = {}) => {\n const result: Record<string, unknown> = {};\n properties?.forEach(({ name, value }) => {\n result[name] = cast(value, castMap[name]);\n });\n return result;\n};\n\nconst extractLists = (lists?: List[], castMap: ItemToObjectCastMap = {}) => {\n const result: Record<string, unknown[]> = {};\n\n lists?.forEach((list) => {\n const { name } = list;\n result[name] = result[name] || [];\n result[name].push(itemToObject(list, castMap));\n });\n return result;\n};\n\nconst itemToObject =\n <T extends object = Record<string, unknown>>(item?: Item | List, castMap: ItemToObjectCastMap = {}): T => {\n return item\n ? ({...extractProperties(item.property, castMap), ...extractLists(item.list, castMap)} as T)\n : ({} as T);\n };\n\n\nexport default itemToObject;\n","export const has = <T extends object, K extends keyof T>(obj: T, key: K): boolean => {\n return Object.hasOwn(obj, key);\n};\n\nexport const set = <T extends object, K extends keyof T>(obj: T, key: K, value: T[K]): void => {\n obj[key] = value;\n};\n\nexport const get = <T extends object, K extends keyof T, D = undefined>(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<string, string>, 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 <netlicensing@labs64.com>\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<string, string>) with converted property values from the object.\n */\nexport default <T extends object>(obj: T, options: { ignore?: string[] } = {}): Record<string, string> => {\n const map: Record<string, string> = {};\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 <netlicensing@labs64.com>\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 <P extends Proto, T extends object, M extends object>(\n props: T,\n methods: M,\n proto: P = {} as P,\n options?: { set?: PropSetEventListener<T>; get?: PropGetEventListener<T> },\n) {\n const listeners: { set: PropSetEventListener<T>[]; get: PropGetEventListener<T>[] } = {\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<T> = {\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<T, M>;\n};\n\nexport default defineEntity;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: BundleProps<T> = {} as BundleProps<T>): BundleEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'currency', def) as string | D;\n },\n\n setProductNumber(number: string) {\n set(props, 'productNumber', number);\n },\n\n getProductNumber<D = undefined>(def?: D): string | D {\n return get(props, 'productNumber', 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<D = undefined>(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 getStaleLicenseTemplateNumbers<D = undefined>(this: void, def?: D): string[] | D {\n return get(props, 'staleLicenseTemplateNumbers', def) as string[] | D;\n },\n\n serialize(this: void): Record<string, string> {\n const cast: Record<string, string> = {};\n\n if (props.licenseTemplateNumbers) {\n cast['licenseTemplateNumbers'] = props.licenseTemplateNumbers.join(',');\n }\n\n return serialize({ ...props, ...cast }, { ignore: ['staleLicenseTemplateNumbers'] });\n },\n };\n\n return defineEntity(props as BundleProps<T>, methods, Bundle);\n};\n\nexport default Bundle;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = BundleProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item,{\n active: 'boolean',\n number: 'string',\n name: 'string',\n price: 'number',\n currency: 'string',\n productNumber: 'string',\n licenseTemplateNumbers: 'string',\n staleLicenseTemplateNumbers: 'string',\n });\n\n const { licenseTemplateNumbers, staleLicenseTemplateNumbers } = props;\n\n if (licenseTemplateNumbers && typeof licenseTemplateNumbers === 'string') {\n props.licenseTemplateNumbers = licenseTemplateNumbers.split(',');\n }\n\n if (staleLicenseTemplateNumbers && typeof staleLicenseTemplateNumbers === 'string') {\n props.staleLicenseTemplateNumbers = staleLicenseTemplateNumbers.split(',');\n }\n\n return Bundle<T>(props as BundleProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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) =>\n Country(\n itemToObject<CountryProps>(item, {\n code: 'string',\n name: 'string',\n vatPercent: 'number',\n isEu: 'boolean',\n }),\n );\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: LicenseProps<T> = {} as LicenseProps<T>): LicenseEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseProps<T>, methods, License);\n};\n\nexport default License;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n active: 'boolean',\n number: 'string',\n name: 'string',\n price: 'number',\n currency: 'string',\n hidden: 'boolean',\n licenseeNumber: 'string',\n licenseTemplateNumber: 'string',\n productModuleNumber: 'string',\n startDate: 'string',\n inUse: 'boolean',\n });\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<T>(props as LicenseProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(properties: LicenseeProps<T> = {} as LicenseeProps<T>): LicenseeEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): boolean | D {\n return get(props, 'markedForTransfer', def) as boolean | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseeProps<T>, methods, Licensee);\n};\n\nexport default Licensee;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseeProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n active: 'boolean',\n number: 'string',\n name: 'string',\n markedForTransfer: 'boolean',\n productNumber: 'string',\n inUse: 'boolean',\n });\n\n const { aliases } = props;\n\n if (aliases && typeof aliases === 'string') {\n props.aliases = aliases.split(',');\n }\n \n return Licensee<T>(props as LicenseeProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 {\n LicenseTemplateMethods,\n LicenseTemplateProps,\n LicenseTemplateEntity,\n} 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 <T extends object>(\n properties: LicenseTemplateProps<T> = {} as LicenseTemplateProps<T>,\n): LicenseTemplateEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): boolean | D {\n return get(props, 'hideLicenses', def) as boolean | D;\n },\n\n setProductModuleNumber(this: void, productModuleNumber: string): void {\n set(props, 'productModuleNumber', productModuleNumber);\n },\n\n getProductModuleNumber<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productModuleNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as LicenseTemplateProps<T>, methods, LicenseTemplate);\n};\n\nexport default LicenseTemplate;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = LicenseTemplateProps>(item?: Item) =>\n LicenseTemplate<T>(\n itemToObject<T>(item, {\n active: 'boolean',\n number: 'string',\n name: 'string',\n licenseType: 'string',\n price: 'number',\n currency: 'string',\n automatic: 'boolean',\n hidden: 'boolean',\n hideLicenses: 'boolean',\n productModuleNumber: 'string',\n inUse: 'boolean',\n }),\n );\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(\n properties: NotificationProps<T> = {} as NotificationProps<T>,\n): NotificationEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'endpoint', def) as string | D;\n },\n\n serialize(): Record<string, string> {\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<T>, methods, Notification);\n};\n\nexport default Notification;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = NotificationProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n active: 'boolean',\n number: 'string',\n name: 'string',\n protocol: 'string',\n events: 'string',\n payload: 'string',\n endpoint: 'string',\n });\n\n const { events } = props;\n\n if (events && typeof events === 'string') {\n props.events = events.split(',');\n }\n\n return Notification<T>(props as NotificationProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object>(\n properties: PaymentMethodProps<T> = {} as PaymentMethodProps<T>,\n): PaymentMethodEntity<T> {\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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'number', def) as string | D;\n },\n };\n\n return defineEntity(props as PaymentMethodProps<T>, methods, PaymentMethod);\n};\n\nexport default PaymentMethod;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = PaymentMethodProps>(item?: Item) =>\n PaymentMethod<T>(\n itemToObject<T>(item, {\n active: 'boolean',\n number: 'string',\n }),\n );\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = object>(\n properties: ProductProps<T> = {} as ProductProps<T>,\n): ProductEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(def?: D): ProductDiscountEntity[] | D {\n return this.getDiscounts(def);\n },\n\n serialize(): Record<string, string | string[]> {\n const map: Record<string, string | string[]> = 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<T>, methods, Product);\n};\n\nexport default Product;\n","import { AxiosError, AxiosResponse, InternalAxiosRequestConfig } from 'axios';\n\nexport default class NlicError<T = unknown, D = unknown> extends AxiosError<T, D> {\n isNlicError = true;\n\n constructor(\n message?: string,\n code?: string,\n config?: InternalAxiosRequestConfig<D>,\n request?: unknown,\n response?: AxiosResponse<T, D>,\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 <netlicensing@labs64.com>\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<D>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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 <T extends object = ProductProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n number: 'string',\n name: 'string',\n version: 'string',\n description: 'string',\n licensingInfo: 'string',\n licenseeAutoCreate: 'boolean',\n inUse: 'boolean',\n });\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<T>(props as ProductProps<T>);\n};\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 {\n ProductModuleEntity,\n ProductModuleMethods,\n ProductModuleProps,\n} 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 <T extends object = object>(\n properties: ProductModuleProps<T> = {} as ProductModuleProps<T>,\n): ProductModuleEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): LicensingModelValues | D {\n return get(props, 'licensingModel', def) as LicensingModelValues | D;\n },\n\n setProductNumber(this: void, productNumber: string): void {\n set(props, 'productNumber', productNumber);\n },\n\n getProductNumber<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'productNumber', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['inUse'] });\n },\n };\n\n return defineEntity(props as ProductModuleProps<T>, methods, ProductModule);\n};\n\nexport default ProductModule;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = ProductModuleProps>(item?: Item) =>\n ProductModule<T>(\n itemToObject<T>(item, {\n active: 'boolean',\n number: 'string',\n name: 'string',\n licensingModel: 'string',\n productNumber: 'string',\n inUse: 'boolean',\n }),\n );\n","/**\n * Token\n *\n * @see https://netlicensing.io/wiki/token-services#create-token\n *\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = object>(properties: TokenProps<T> = {} as TokenProps<T>): TokenEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'cancelURLTitle', def) as string | D;\n },\n\n getShopURL<D = undefined>(this: void, def?: D): string | D {\n return get(props, 'shopURL', def) as string | D;\n },\n\n serialize(this: void): Record<string, string> {\n return serialize(props, { ignore: ['shopURL'] });\n },\n };\n\n return defineEntity(props as TokenProps<T>, methods, Token);\n};\n\nexport default Token;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = TokenProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n active: 'boolean',\n number: 'string',\n expirationTime: 'string',\n tokenType: 'string',\n licenseeNumber: 'string',\n action: 'string',\n apiKeyRole: 'string',\n bundleNumber: 'string',\n bundlePrice: 'number',\n productNumber: 'string',\n predefinedShoppingItem: 'string',\n successURL: 'string',\n successURLTitle: 'string',\n cancelURL: 'string',\n cancelURLTitle: 'string',\n shopURL: 'string',\n });\n\n const { expirationTime } = props;\n\n if (expirationTime && typeof expirationTime === 'string') {\n props.expirationTime = new Date(expirationTime);\n }\n\n return Token<T>(props as TokenProps<T>);\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <T extends object>(\n properties: TransactionProps<T> = {} as TransactionProps<T>,\n): TransactionEntity<T> {\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(this: void, def?: D): LicenseTransactionJoinEntity[] | D {\n return get(props, 'licenseTransactionJoins', def) as LicenseTransactionJoinEntity[] | D;\n },\n\n serialize(this: void) {\n const clone: Record<string, unknown> = {...props};\n\n clone.datecreated = props.dateCreated;\n clone.dateclosed = props.dateClosed\n\n delete clone.dateCreated;\n delete clone.dateClosed;\n\n return serialize(clone, { ignore: ['licenseTransactionJoins', 'inUse'] });\n },\n };\n\n return defineEntity(props as TransactionProps<T>, methods, Transaction);\n};\n\nexport default Transaction;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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 <T extends object = TransactionProps>(item?: Item) => {\n const props = itemToObject<Record<string, unknown>>(item, {\n active: 'boolean',\n number: 'string',\n status: 'string',\n source: 'string',\n grandTotal: 'number',\n discount: 'number',\n currency: 'string',\n datecreated: 'string',\n dateclosed: 'string',\n paymentMethod: 'string',\n licenseTransactionJoins: 'json',\n inUse: 'boolean',\n });\n\n const { datecreated: dateCreated, dateclosed: dateClosed } = props;\n\n if (dateCreated && typeof dateCreated === 'string') {\n props.dateCreated = new Date(dateCreated);\n delete props.datecreated;\n }\n\n if (dateClosed && typeof dateClosed === 'string') {\n props.dateClosed = new Date(dateClosed);\n delete props.dateclosed;\n }\n\n type LicenseTransactionJoins = { licenseNumber: string | number; transactionNumber: string | number }[] | undefined;\n const licenseTransactionJoins: LicenseTransactionJoins = props.licenseTransactionJoin as LicenseTransactionJoins;\n\n delete props.licenseTransactionJoin;\n\n if (licenseTransactionJoins) {\n props.licenseTransactionJoins = licenseTransactionJoins.map(({ transactionNumber, licenseNumber }) => {\n const transaction = Transaction({ number: String(transactionNumber) });\n const license = License({ number: String(licenseNumber) });\n\n return LicenseTransactionJoin(transaction, license);\n });\n }\n\n return Transaction<T>(props as TransactionProps<T>);\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\": \"2.0.3\",\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\": \"git+https://github.com/Labs64/NetLicensingClient-javascript.git\"\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.39.4\",\n \"@types/node\": \"^25.3.5\",\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.13.6\",\n \"eslint\": \"^9.39.4\",\n \"eslint-plugin-import\": \"^2.31.0\",\n \"prettier\": \"3.8.1\",\n \"tsup\": \"^8.4.0\",\n \"typescript\": \"^5.8.3\",\n \"typescript-eslint\": \"^8.29.1\",\n \"vitest\": \"^3.2.4\"\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 <T extends Record<string, unknown>>(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 } 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 { AxiosRequestClient, 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<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => {\n const headers: Record<string, string> = {\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<string, unknown>);\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: AxiosRequestClient = config?.axiosInstance || getAxiosInstance();\n\n try {\n const response: AxiosResponse<NlicResponse> = await instance.request(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<NlicResponse>,\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<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => request(context, 'get', endpoint, data, config);\n\nexport const post = (\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => request(context, 'post', endpoint, data, config);\n\nexport const del = (\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n): Promise<AxiosResponse<NlicResponse>> => 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<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return get(context, endpoint, data, config);\n },\n\n post(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return post(context, endpoint, data, config);\n },\n\n delete(\n this: void,\n context: ContextInstance,\n endpoint: string,\n data?: Record<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\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<string, unknown>,\n config?: RequestConfig,\n ): Promise<AxiosResponse<NlicResponse>> {\n return request(context, method, endpoint, data, config);\n },\n\n toQueryString<T extends Record<string, unknown>>(this: void, data: T): string {\n return toQueryString(data);\n },\n};\n\nexport default service;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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, string | boolean | number>): 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<string, string> => {\n const result: Record<string, string> = {};\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 <netlicensing@labs64.com>\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 <netlicensing@labs64.com>\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 <T extends object>(content: T, pagination?: Partial<ItemPagination>) {\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<T> = {\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<T>;\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 <netlicensing@labs64.com>\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<T extends object = BundleProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<BundleEntity<SavedBundleProps<T>>[]>> {\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<SavedBundleProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToBundle<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n bundle: BundleEntity<T>,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<T extends object = BundleProps>(\n context: ContextInstance,\n number: string,\n bundle: BundleEntity<T>,\n config?: RequestConfig,\n ): Promise<BundleEntity<SavedBundleProps<T>>> {\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<SavedBundleProps<T>>(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<AxiosResponse> {\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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n licenseeNumber: string,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>[]> {\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<SavedLicenseProps<T>>(v)) || [];\n },\n};\n\nexport default bundleService;\n","/**\n * @author Labs64 <netlicensing@labs64.com>\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<string, ProductModuleValidation>;\n ttl?: Date;\n\n constructor() {\n this.validations = {};\n }\n\n getValidators(): Record<string, ProductModuleValidation> {\n return this.validations;\n }\n\n setValidation(validation: ProductModuleValidation): this {\n this.validations[validation.productModuleNumber] = validation;\n return this;\n }\n\n getValidation<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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<T extends object = LicenseeProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseeEntity<SavedLicenseeProps<T>>[]>> {\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<SavedLicenseeProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicensee<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n productNumber: string,\n licensee: LicenseeEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<T extends object = LicenseeProps>(\n context: ContextInstance,\n number: string,\n licensee: LicenseeEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseeEntity<SavedLicenseeProps<T>>> {\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<SavedLicenseeProps<T>>(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<AxiosResponse<NlicResponse>> {\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<IValidationResults> {\n ensureNotEmpty(number, 'number');\n\n const data: Record<string, string | boolean> = {};\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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseEntity<SavedLicenseProps<T>>[]>> {\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<SavedLicenseProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicense<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n licenseeNumber: string | null,\n licenseTemplateNumber: string | null,\n transactionNumber: string | null,\n license: LicenseEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<T extends object = LicenseProps>(\n context: ContextInstance,\n number: string,\n transactionNumber: string | null,\n license: LicenseEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseEntity<SavedLicenseProps<T>>> {\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<SavedLicenseProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>[]>> {\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<SavedLicenseTemplateProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToLicenseTemplate<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n productModuleNumber: string | null,\n licenseTemplate: LicenseTemplateEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<T extends object = LicenseTemplateProps>(\n context: ContextInstance,\n number: string,\n licenseTemplate: LicenseTemplateEntity<T>,\n config?: RequestConfig,\n ): Promise<LicenseTemplateEntity<SavedLicenseTemplateProps<T>>> {\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<SavedLicenseTemplateProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = NotificationProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<NotificationEntity<SavedNotificationProps<T>>[]>> {\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<SavedNotificationProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToNotification<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n notification: NotificationEntity<T>,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<T extends object = NotificationProps>(\n context: ContextInstance,\n number: string,\n notification: NotificationEntity<T>,\n config?: RequestConfig,\n ): Promise<NotificationEntity<SavedNotificationProps<T>>> {\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<SavedNotificationProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<PaymentMethodEntity<SavedPaymentMethodProps<T>>> {\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<SavedPaymentMethodProps<T>>(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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<PaymentMethodEntity<SavedPaymentMethodProps<T>>[]>> {\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<SavedPaymentMethodProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToPaymentMethod<SavedPaymentMethodProps<T>>(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<T extends object = PaymentMethodProps>(\n context: ContextInstance,\n number: string,\n paymentMethod: PaymentMethodEntity<T>,\n config?: RequestConfig,\n ): Promise<PaymentMethodEntity<SavedPaymentMethodProps<T>>> {\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<SavedPaymentMethodProps<T>>(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 <netlicensing@labs64.com>\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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<ProductModuleEntity<SavedProductModuleProps<T>>[]>> {\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<SavedProductModuleProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProductModule<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n productNumber: string | null,\n productModule: ProductModuleEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<T extends object = ProductModuleProps>(\n context: ContextInstance,\n number: string,\n productModule: ProductModuleEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductModuleEntity<SavedProductModuleProps<T>>> {\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<SavedProductModuleProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = ProductProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<ProductEntity<SavedProductProps<T>>[]>> {\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<SavedProductProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToProduct<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n product: ProductEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<T extends object = ProductProps>(\n context: ContextInstance,\n number: string,\n product: ProductEntity<T>,\n config?: RequestConfig,\n ): Promise<ProductEntity<SavedProductProps<T>>> {\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<SavedProductProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = TokenProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<TokenEntity<SavedTokenProps<T>>> {\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<SavedTokenProps<T>>(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<T extends object = TokenProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<TokenEntity<SavedTokenProps<T>>[]>> {\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<SavedTokenProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToToken<SavedTokenProps<T>>(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<T extends object = TokenProps>(\n context: ContextInstance,\n token: TokenEntity<T>,\n config?: RequestConfig,\n ): Promise<TokenEntity<SavedTokenProps<T>>> {\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<SavedTokenProps<T>>(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<AxiosResponse<NlicResponse>> {\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 <netlicensing@labs64.com>\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<T extends object = TransactionProps>(\n context: ContextInstance,\n number: string,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n filter?: Record<string, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<TransactionEntity<SavedTransactionProps<T>>[]>> {\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<SavedTransactionProps<T>>[] | undefined = items?.item\n .filter((v) => v.type === type)\n .map((v) => itemToTransaction<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n transaction: TransactionEntity<T>,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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<T extends object = TransactionProps>(\n context: ContextInstance,\n number: string,\n transaction: TransactionEntity<T>,\n config?: RequestConfig,\n ): Promise<TransactionEntity<SavedTransactionProps<T>>> {\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<SavedTransactionProps<T>>(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 <netlicensing@labs64.com>\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<PageInstance<LicenseTypeValues[]>> {\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<PageInstance<LicensingModelValues[]>> {\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, string | boolean | number> | string | null,\n config?: RequestConfig,\n ): Promise<PageInstance<CountryEntity[]>> {\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 <netlicensing@labs64.com>\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<D = undefined>(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<D = undefined>(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<D = undefined>(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<D = undefined>(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 <netlicensing@labs64.com>\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<D = undefined>(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","isBooleanString","value","isNullString","isJsonStructure","trimmed","isNumericString","parsed","parseNumber","parseBoolean","parseNull","parseJson","parseAuto","cast","type","cast_default","extractProperties","properties","castMap","result","name","value","cast_default","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","staleLicenseTemplateNumbers","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","props","itemToObject_default","aliases","Licensee_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"]}
|