namecheap-ts
Version:
A simple wrapper for namecheap API
1 lines • 17.6 kB
Source Map (JSON)
{"version":3,"sources":["../src/commands.ts","../src/types.ts","../src/api/api-client.ts","../src/api/errors.ts","../src/api/utils.ts","../src/exceptions/InvalidDomainNameException.ts","../src/namecheap.ts"],"sourcesContent":["export enum Commands {\r\n // domains\r\n DOMAINS_GET_LIST = \"namecheap.domains.getList\",\r\n DOMAINS_GET_CONTACTS = \"namecheap.domains.getContacts\",\r\n DOMAINS_CREATE = \"namecheap.domains.create\",\r\n DOMAINS_GET_TLD_LIST = \"namecheap.domains.getTldList\",\r\n DOMAINS_SET_CONTACTS = \"namecheap.domains.setContacts\",\r\n DOMAINS_CHECK = \"namecheap.domains.check\",\r\n DOMAINS_REACTIVATE = \"namecheap.domains.reactivate\",\r\n DOMAINS_RENEW = \"namecheap.domains.renew\",\r\n DOMAINS_GET_REGISTRAR_LOCK = \"namecheap.domains.getRegistrarLock\",\r\n DOMAINS_SET_REGISTRAR_LOCK = \"namecheap.domains.setRegistrarLock\",\r\n DOMAINS_GET_INFO = \"namecheap.domains.getInfo\",\r\n\r\n // domains.dns\r\n DOMAINS_DNS_SET_DEFAULT = \"namecheap.domains.dns.setDefault\",\r\n DOMAINS_DNS_SET_CUSTOM = \"namecheap.domains.dns.setCustom\",\r\n DOMAINS_DNS_GET_LIST = \"namecheap.domains.dns.getList\",\r\n DOMAINS_DNS_GET_HOSTS = \"namecheap.domains.dns.getHosts\",\r\n DOMAINS_DNS_GET_EMAIL_FORWARDING = \"namecheap.domains.dns.getEmailForwarding\",\r\n DOMAINS_DNS_SET_EMAIL_FORWARDING = \"namecheap.domains.dns.setEmailForwarding\",\r\n DOMAINS_DNS_SET_HOSTS = \"namecheap.domains.dns.setHosts\",\r\n\r\n // domains.ns\r\n DOMAINS_NS_CREATE = \"namecheap.domains.ns.create\",\r\n DOMAINS_NS_DELETE = \"namecheap.domains.ns.delete\",\r\n DOMAINS_NS_GET_INFO = \"namecheap.domains.ns.getInfo\",\r\n DOMAINS_NS_UPDATE = \"namecheap.domains.ns.update\",\r\n\r\n // domains.transfer\r\n DOMAINS_TRANSFER_CREATE = \"namecheap.domains.transfer.create\",\r\n DOMAINS_TRANSFER_GET_STATUS = \"namecheap.domains.transfer.getStatus\",\r\n DOMAINS_TRANSFER_UPDATE_STATUS = \"namecheap.domains.transfer.updateStatus\",\r\n DOMAINS_TRANSFER_GET_LIST = \"namecheap.domains.transfer.getList\",\r\n\r\n // ssl\r\n SSL_CREATE = \"namecheap.ssl.create\",\r\n SSL_GET_LIST = \"namecheap.ssl.getList\",\r\n SSL_PARSE_CSR = \"namecheap.ssl.parseCSR\",\r\n SSL_GET_APPROVER_EMAIL_LIST = \"namecheap.ssl.getApproverEmailList\",\r\n SSL_ACTIVATE = \"namecheap.ssl.activate\",\r\n SSL_RESEND_APPROVER_EMAIL = \"namecheap.ssl.resendApproverEmail\",\r\n SSL_GET_INFO = \"namecheap.ssl.getInfo\",\r\n SSL_RENEW = \"namecheap.ssl.renew\",\r\n SSL_REISSUE = \"namecheap.ssl.reissue\",\r\n SSL_RESEND_FULFILLMENT_EMAIL = \"namecheap.ssl.resendfulfillmentemail\",\r\n SSL_PURCHASE_MORE_SANS = \"namecheap.ssl.purchasemoresans\",\r\n SSL_REVOKE_CERTIFICATE = \"namecheap.ssl.revokecertificate\",\r\n SSL_EDIT_DCV_METHOD = \"namecheap.ssl.editDCVMethod\",\r\n\r\n // users\r\n USERS_GET_PRICING = \"namecheap.users.getPricing\",\r\n USERS_GET_BALANCES = \"namecheap.users.getBalances\",\r\n USERS_CHANGE_PASSWORD = \"namecheap.users.changePassword\",\r\n USERS_UPDATE = \"namecheap.users.update\",\r\n USERS_CREATE_ADD_FUNDS_REQUEST = \"namecheap.users.createaddfundsrequest\",\r\n USERS_GET_ADD_FUNDS_STATUS = \"namecheap.users.getAddFundsStatus\",\r\n USERS_CREATE = \"namecheap.users.create\",\r\n USERS_LOGIN = \"namecheap.users.login\",\r\n USERS_RESET_PASSWORD = \"namecheap.users.resetPassword\",\r\n\r\n // users.address\r\n USERS_ADDRESS_CREATE = \"namecheap.users.address.create\",\r\n USERS_ADDRESS_DELETE = \"namecheap.users.address.delete\",\r\n USERS_ADDRESS_GET_INFO = \"namecheap.users.address.getInfo\",\r\n USERS_ADDRESS_GET_LIST = \"namecheap.users.address.getList\",\r\n USERS_ADDRESS_SET_DEFAULT = \"namecheap.users.address.setDefault\",\r\n USERS_ADDRESS_UPDATE = \"namecheap.users.address.update\",\r\n\r\n // domain privacy\r\n WHO_IS_GUARD_CHANGE_EMAIL_ADDRESS = \"Namecheap.Whoisguard.changeemailaddress\",\r\n WHO_IS_GUARD_ENABLE = \"Namecheap.Whoisguard.enable\",\r\n WHO_IS_GUARD_DISABLE = \"Namecheap.Whoisguard.disable\",\r\n WHO_IS_GUARD_GET_LIST = \"Namecheap.Whoisguard.getList\",\r\n WHO_IS_GUARD_RENEW = \"Namecheap.Whoisguard.renew\",\r\n}\r\n\r\nexport type Command = `${Commands}`;\r\n","export type Payload = Record<string, string | number>;\r\n\r\nexport interface IResponse<T = any> {\r\n data: T;\r\n status: number;\r\n}\r\n\r\nexport type ICheckDomainResponse = IResponse<{\r\n available: boolean;\r\n premium: boolean;\r\n}>;\r\n\r\nexport type IRegisterDomainResponse = IResponse<{\r\n domain: string;\r\n registered: boolean;\r\n chargedAmount: number;\r\n domainID: string;\r\n orderID: string;\r\n transactionID: string;\r\n whoIsGuardEnable: boolean;\r\n freePositiveSSL: boolean;\r\n nonRealTimeDomain: boolean;\r\n}>;\r\n\r\nexport type IAddFundsRequestResponse = IResponse<{\r\n tokenId: string;\r\n returnURL: string;\r\n redirectURL: string;\r\n}>;\r\n\r\nexport type IGetFundsStatusResponse = IResponse<{\r\n status: string;\r\n amount: number;\r\n}>;\r\n\r\nexport enum DomainPriceActions {\r\n REGISTER = \"REGISTER\",\r\n RENEW = \"RENEW\",\r\n REACTIVATE = \"REACTIVATE\",\r\n TRANSFER = \"TRANSFER\",\r\n}\r\n\r\nexport type DomainPriceAction = `${DomainPriceActions}`;\r\n\r\nexport type AddFundsRequestPayload = {\r\n username?: string;\r\n paymentType: \"creditcard\";\r\n amount: number;\r\n returnURL: string;\r\n};\r\n","import axios, { AxiosInstance, AxiosResponse } from \"axios\";\r\nimport { ResponseError, XMLParsingError } from \"./errors\";\r\nimport { parseXMLString } from \"./utils\";\r\n\r\nclass APIClient {\r\n private readonly _client: AxiosInstance;\r\n\r\n constructor(baseURL: string) {\r\n this._client = axios.create({ baseURL });\r\n this._client.interceptors.response.use(this.onResponse);\r\n }\r\n\r\n public async get(url: string) {\r\n return await this._client.get(url);\r\n }\r\n\r\n public async post(url: string) {\r\n return await this._client.post(url);\r\n }\r\n\r\n private async onResponse(response: AxiosResponse): Promise<AxiosResponse> {\r\n try {\r\n const result = await parseXMLString(response.data);\r\n\r\n if (result.ApiResponse.$.Status === \"ERROR\") {\r\n const responseErrors = result.ApiResponse.Errors;\r\n const code = responseErrors.Error.$.Number;\r\n const message = responseErrors.Error._;\r\n\r\n throw new ResponseError(message, code);\r\n }\r\n\r\n response.data = result.ApiResponse.CommandResponse;\r\n } catch (err) {\r\n response.status = 400;\r\n if (err instanceof ResponseError) {\r\n throw err;\r\n }\r\n\r\n throw new XMLParsingError();\r\n }\r\n\r\n return response;\r\n }\r\n}\r\n\r\nexport default APIClient;\r\n","export class XMLParsingError extends Error {\n constructor() {\n super(\"Invalid XML response\");\n\n this.name = \"XMLParsingError\";\n }\n}\n\nexport class ResponseError extends Error {\n constructor(message: string, readonly code?: number) {\n super((code ? `${code}: ` : \"\") + message);\n\n this.name = \"ResponseError\";\n }\n}\n","import { parseStringPromise } from \"xml2js\";\n\nexport function parseXMLString(xml: string): Promise<any> {\n return parseStringPromise(xml, {\n explicitArray: false,\n attrValueProcessors: [transformValues],\n });\n}\n\nfunction transformValues(value: string, name: string) {\n // check boolean\n if (value === \"false\" || value === \"true\") {\n return value === \"true\";\n }\n\n // check numbers\n if (!isNaN(+value)) {\n return +value;\n }\n\n return value;\n}\n","export class InvalidDomainNameException extends Error {\n constructor(domainName: string) {\n super(`The provided domain name [${domainName}] is not valid`);\n\n this.name = \"InvalidDomainNameException\";\n }\n}\n","import APIClient from \"./api\";\r\nimport { Commands, Command } from \"./commands\";\r\nimport { InvalidDomainNameException } from \"./exceptions\";\r\nimport {\r\n AddFundsRequestPayload,\r\n DomainPriceAction,\r\n IAddFundsRequestResponse,\r\n ICheckDomainResponse,\r\n IGetFundsStatusResponse,\r\n IRegisterDomainResponse,\r\n IResponse,\r\n Payload,\r\n} from \"./types\";\r\n\r\nexport interface INamecheapConfig {\r\n apiUser: string;\r\n apiKey: string;\r\n username: string;\r\n clientIp: string;\r\n}\r\n\r\nclass Namecheap {\r\n private readonly apiClient: APIClient;\r\n\r\n constructor(\r\n private readonly config: INamecheapConfig,\r\n sandbox?: boolean,\r\n ) {\r\n const baseURL = `https://api${\r\n sandbox ? \".sandbox\" : \"\"\r\n }.namecheap.com/xml.response`;\r\n this.apiClient = new APIClient(baseURL);\r\n }\r\n\r\n public async call(command: Command, payload: Payload): Promise<IResponse> {\r\n const { username, ...config } = this.config;\r\n\r\n const params = {\r\n username,\r\n ...payload,\r\n ...config,\r\n command,\r\n };\r\n\r\n const url = \"?\" + new URLSearchParams(params).toString();\r\n\r\n const { data, status } = await this.apiClient.post(url);\r\n\r\n return { data, status };\r\n }\r\n\r\n public async checkDomain(domainName: string): Promise<ICheckDomainResponse> {\r\n const { data, status } = await this.call(Commands.DOMAINS_CHECK, {\r\n DomainList: domainName,\r\n });\r\n\r\n const response: ICheckDomainResponse = {\r\n data: {\r\n available: data.DomainCheckResult.$.Available,\r\n premium: data.DomainCheckResult.$.IsPremiumName,\r\n },\r\n status,\r\n };\r\n\r\n return response;\r\n }\r\n\r\n public async getDomainPrice(\r\n domainName: string,\r\n action: DomainPriceAction,\r\n ): Promise<IResponse<object[]>> {\r\n const [_, tld] = domainName.split(\".\");\r\n if (!tld) {\r\n throw new InvalidDomainNameException(domainName);\r\n }\r\n\r\n const { data, status } = await this.call(Commands.USERS_GET_PRICING, {\r\n ProductType: \"DOMAIN\",\r\n ProductCategory: \"DOMAINS\",\r\n ActionName: action,\r\n ProductName: tld,\r\n });\r\n\r\n const price =\r\n data.UserGetPricingResult?.ProductType?.ProductCategory?.Product?.Price;\r\n\r\n if (!price) {\r\n throw new InvalidDomainNameException(domainName);\r\n }\r\n\r\n const pricing: object[] = Array.isArray(price)\r\n ? price.map((price: any) => ({ ...price.$ }))\r\n : [{ ...price.$ }];\r\n\r\n return { data: pricing, status };\r\n }\r\n\r\n public async registerDomain(\r\n payload: Payload,\r\n ): Promise<IRegisterDomainResponse> {\r\n const { data, status } = await this.call(Commands.DOMAINS_CREATE, payload);\r\n\r\n const result = data?.DomainCreateResult?.$;\r\n\r\n const response: IRegisterDomainResponse = {\r\n data: {\r\n domain: result.Domain,\r\n registered: result.Registered,\r\n chargedAmount: result.ChargedAmount,\r\n domainID: result.DomainID,\r\n orderID: result.OrderID,\r\n transactionID: result.TransactionID,\r\n whoIsGuardEnable: result.WhoisguardEnable,\r\n freePositiveSSL: result.FreePositiveSSL,\r\n nonRealTimeDomain: result.NonRealTimeDomain,\r\n },\r\n status,\r\n };\r\n\r\n return response;\r\n }\r\n\r\n public async addFundsRequest(\r\n payload: AddFundsRequestPayload,\r\n ): Promise<IAddFundsRequestResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_CREATE_ADD_FUNDS_REQUEST,\r\n payload,\r\n );\r\n\r\n const result = data.Createaddfundsrequestresult.$;\r\n\r\n const response: IAddFundsRequestResponse = {\r\n data: {\r\n tokenId: result.TokenID,\r\n returnURL: result.ReturnURL,\r\n redirectURL: result.RedirectURL,\r\n },\r\n status,\r\n };\r\n\r\n return response;\r\n }\r\n\r\n public async getFundsStatus(\r\n tokenId: string,\r\n ): Promise<IGetFundsStatusResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_GET_ADD_FUNDS_STATUS,\r\n {\r\n tokenId,\r\n },\r\n );\r\n\r\n const result = data.GetAddFundsStatusResult.$;\r\n\r\n const response: IGetFundsStatusResponse = {\r\n data: {\r\n amount: result.Amount,\r\n status: result.Status,\r\n },\r\n status,\r\n };\r\n\r\n return response;\r\n }\r\n}\r\n\r\nexport default Namecheap;\r\n"],"mappings":";AAAO,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,UAAA,sBAAmB;AACnB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,oBAAiB;AACjB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,gCAA6B;AAC7B,EAAAA,UAAA,gCAA6B;AAC7B,EAAAA,UAAA,sBAAmB;AAGnB,EAAAA,UAAA,6BAA0B;AAC1B,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,sCAAmC;AACnC,EAAAA,UAAA,sCAAmC;AACnC,EAAAA,UAAA,2BAAwB;AAGxB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,yBAAsB;AACtB,EAAAA,UAAA,uBAAoB;AAGpB,EAAAA,UAAA,6BAA0B;AAC1B,EAAAA,UAAA,iCAA8B;AAC9B,EAAAA,UAAA,oCAAiC;AACjC,EAAAA,UAAA,+BAA4B;AAG5B,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,iCAA8B;AAC9B,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,+BAA4B;AAC5B,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kCAA+B;AAC/B,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,yBAAsB;AAGtB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,oCAAiC;AACjC,EAAAA,UAAA,gCAA6B;AAC7B,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,0BAAuB;AAGvB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,+BAA4B;AAC5B,EAAAA,UAAA,0BAAuB;AAGvB,EAAAA,UAAA,uCAAoC;AACpC,EAAAA,UAAA,yBAAsB;AACtB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,wBAAqB;AA1EX,SAAAA;AAAA,GAAA;;;ACmCL,IAAK,qBAAL,kBAAKC,wBAAL;AACL,EAAAA,oBAAA,cAAW;AACX,EAAAA,oBAAA,WAAQ;AACR,EAAAA,oBAAA,gBAAa;AACb,EAAAA,oBAAA,cAAW;AAJD,SAAAA;AAAA,GAAA;;;ACnCZ,OAAO,WAA6C;;;ACA7C,IAAM,kBAAN,cAA8B,MAAM;AAAA,EACzC,cAAc;AACZ,UAAM,sBAAsB;AAE5B,SAAK,OAAO;AAAA,EACd;AACF;AAEO,IAAM,gBAAN,cAA4B,MAAM;AAAA,EACvC,YAAY,SAA0B,MAAe;AACnD,WAAO,OAAO,GAAG,IAAI,OAAO,MAAM,OAAO;AADL;AAGpC,SAAK,OAAO;AAAA,EACd;AACF;;;ACdA,SAAS,0BAA0B;AAE5B,SAAS,eAAe,KAA2B;AACxD,SAAO,mBAAmB,KAAK;AAAA,IAC7B,eAAe;AAAA,IACf,qBAAqB,CAAC,eAAe;AAAA,EACvC,CAAC;AACH;AAEA,SAAS,gBAAgB,OAAe,MAAc;AAEpD,MAAI,UAAU,WAAW,UAAU,QAAQ;AACzC,WAAO,UAAU;AAAA,EACnB;AAGA,MAAI,CAAC,MAAM,CAAC,KAAK,GAAG;AAClB,WAAO,CAAC;AAAA,EACV;AAEA,SAAO;AACT;;;AFjBA,IAAM,YAAN,MAAgB;AAAA,EAGd,YAAY,SAAiB;AAC3B,SAAK,UAAU,MAAM,OAAO,EAAE,QAAQ,CAAC;AACvC,SAAK,QAAQ,aAAa,SAAS,IAAI,KAAK,UAAU;AAAA,EACxD;AAAA,EAEA,MAAa,IAAI,KAAa;AAC5B,WAAO,MAAM,KAAK,QAAQ,IAAI,GAAG;AAAA,EACnC;AAAA,EAEA,MAAa,KAAK,KAAa;AAC7B,WAAO,MAAM,KAAK,QAAQ,KAAK,GAAG;AAAA,EACpC;AAAA,EAEA,MAAc,WAAW,UAAiD;AACxE,QAAI;AACF,YAAM,SAAS,MAAM,eAAe,SAAS,IAAI;AAEjD,UAAI,OAAO,YAAY,EAAE,WAAW,SAAS;AAC3C,cAAM,iBAAiB,OAAO,YAAY;AAC1C,cAAM,OAAO,eAAe,MAAM,EAAE;AACpC,cAAM,UAAU,eAAe,MAAM;AAErC,cAAM,IAAI,cAAc,SAAS,IAAI;AAAA,MACvC;AAEA,eAAS,OAAO,OAAO,YAAY;AAAA,IACrC,SAAS,KAAK;AACZ,eAAS,SAAS;AAClB,UAAI,eAAe,eAAe;AAChC,cAAM;AAAA,MACR;AAEA,YAAM,IAAI,gBAAgB;AAAA,IAC5B;AAEA,WAAO;AAAA,EACT;AACF;AAEA,IAAO,qBAAQ;;;AG9CR,IAAM,6BAAN,cAAyC,MAAM;AAAA,EACpD,YAAY,YAAoB;AAC9B,UAAM,6BAA6B,UAAU,gBAAgB;AAE7D,SAAK,OAAO;AAAA,EACd;AACF;;;ACeA,IAAM,YAAN,MAAgB;AAAA,EAGd,YACmB,QACjB,SACA;AAFiB;AAGjB,UAAM,UAAU,cACd,UAAU,aAAa,EACzB;AACA,SAAK,YAAY,IAAI,mBAAU,OAAO;AAAA,EACxC;AAAA,EAEA,MAAa,KAAK,SAAkB,SAAsC;AACxE,UAAM,EAAE,UAAU,GAAG,OAAO,IAAI,KAAK;AAErC,UAAM,SAAS;AAAA,MACb;AAAA,MACA,GAAG;AAAA,MACH,GAAG;AAAA,MACH;AAAA,IACF;AAEA,UAAM,MAAM,MAAM,IAAI,gBAAgB,MAAM,EAAE,SAAS;AAEvD,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,UAAU,KAAK,GAAG;AAEtD,WAAO,EAAE,MAAM,OAAO;AAAA,EACxB;AAAA,EAEA,MAAa,YAAY,YAAmD;AAC1E,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,oDAA6B;AAAA,MAC/D,YAAY;AAAA,IACd,CAAC;AAED,UAAM,WAAiC;AAAA,MACrC,MAAM;AAAA,QACJ,WAAW,KAAK,kBAAkB,EAAE;AAAA,QACpC,SAAS,KAAK,kBAAkB,EAAE;AAAA,MACpC;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,eACX,YACA,QAC8B;AAC9B,UAAM,CAAC,GAAG,GAAG,IAAI,WAAW,MAAM,GAAG;AACrC,QAAI,CAAC,KAAK;AACR,YAAM,IAAI,2BAA2B,UAAU;AAAA,IACjD;AAEA,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,2DAAiC;AAAA,MACnE,aAAa;AAAA,MACb,iBAAiB;AAAA,MACjB,YAAY;AAAA,MACZ,aAAa;AAAA,IACf,CAAC;AAED,UAAM,QACJ,KAAK,sBAAsB,aAAa,iBAAiB,SAAS;AAEpE,QAAI,CAAC,OAAO;AACV,YAAM,IAAI,2BAA2B,UAAU;AAAA,IACjD;AAEA,UAAM,UAAoB,MAAM,QAAQ,KAAK,IACzC,MAAM,IAAI,CAACC,YAAgB,EAAE,GAAGA,OAAM,EAAE,EAAE,IAC1C,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC;AAEnB,WAAO,EAAE,MAAM,SAAS,OAAO;AAAA,EACjC;AAAA,EAEA,MAAa,eACX,SACkC;AAClC,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,sDAA8B,OAAO;AAEzE,UAAM,SAAS,MAAM,oBAAoB;AAEzC,UAAM,WAAoC;AAAA,MACxC,MAAM;AAAA,QACJ,QAAQ,OAAO;AAAA,QACf,YAAY,OAAO;AAAA,QACnB,eAAe,OAAO;AAAA,QACtB,UAAU,OAAO;AAAA,QACjB,SAAS,OAAO;AAAA,QAChB,eAAe,OAAO;AAAA,QACtB,kBAAkB,OAAO;AAAA,QACzB,iBAAiB,OAAO;AAAA,QACxB,mBAAmB,OAAO;AAAA,MAC5B;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,gBACX,SACmC;AACnC,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA;AAAA,MAElC;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,4BAA4B;AAEhD,UAAM,WAAqC;AAAA,MACzC,MAAM;AAAA,QACJ,SAAS,OAAO;AAAA,QAChB,WAAW,OAAO;AAAA,QAClB,aAAa,OAAO;AAAA,MACtB;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAa,eACX,SACkC;AAClC,UAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA;AAAA,MAElC;AAAA,QACE;AAAA,MACF;AAAA,IACF;AAEA,UAAM,SAAS,KAAK,wBAAwB;AAE5C,UAAM,WAAoC;AAAA,MACxC,MAAM;AAAA,QACJ,QAAQ,OAAO;AAAA,QACf,QAAQ,OAAO;AAAA,MACjB;AAAA,MACA;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AACF;AAEA,IAAO,oBAAQ;","names":["Commands","DomainPriceActions","price"]}