namecheap-ts 1.0.4 → 1.0.5

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 CHANGED
@@ -98,7 +98,7 @@ declare enum DomainPriceActions {
98
98
  }
99
99
  type DomainPriceAction = `${DomainPriceActions}`;
100
100
  type AddFundsRequestPayload = {
101
- username: string;
101
+ username?: string;
102
102
  paymentType: "creditcard";
103
103
  amount: number;
104
104
  returnURL: string;
package/dist/index.d.ts CHANGED
@@ -98,7 +98,7 @@ declare enum DomainPriceActions {
98
98
  }
99
99
  type DomainPriceAction = `${DomainPriceActions}`;
100
100
  type AddFundsRequestPayload = {
101
- username: string;
101
+ username?: string;
102
102
  paymentType: "creditcard";
103
103
  amount: number;
104
104
  returnURL: string;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../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 * from \"./commands\";\r\nexport * from \"./types\";\r\nexport * from \"./namecheap\";\r\nexport { default } from \"./namecheap\";\r\n","export enum Commands {\r\n // domains\r\n DOMAINS_GETLIST = \"namecheap.domains.getList\",\r\n DOMAINS_GETCONTACTS = \"namecheap.domains.getContacts\",\r\n DOMAINS_CREATE = \"namecheap.domains.create\",\r\n DOMAINS_GETTLDLIST = \"namecheap.domains.getTldList\",\r\n DOMAINS_SETCONTACTS = \"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_GETREGISTRARLOCK = \"namecheap.domains.getRegistrarLock\",\r\n DOMAINS_SETREGISTRARLOCK = \"namecheap.domains.setRegistrarLock\",\r\n DOMAINS_GETINFO = \"namecheap.domains.getInfo\",\r\n\r\n // domains.dns\r\n DOMAINS_DNS_SETDEFAULT = \"namecheap.domains.dns.setDefault\",\r\n DOMAINS_DNS_SETCUSTOM = \"namecheap.domains.dns.setCustom\",\r\n DOMAINS_DNS_GETLIST = \"namecheap.domains.dns.getList\",\r\n DOMAINS_DNS_GETHOSTS = \"namecheap.domains.dns.getHosts\",\r\n DOMAINS_DNS_GETEMAILFORWARDING = \"namecheap.domains.dns.getEmailForwarding\",\r\n DOMAINS_DNS_SETEMAILFORWARDING = \"namecheap.domains.dns.setEmailForwarding\",\r\n DOMAINS_DNS_SETHOSTS = \"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_GETINFO = \"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_GETSTATUS = \"namecheap.domains.transfer.getStatus\",\r\n DOMAINS_TRANSFER_UPDATESTATUS = \"namecheap.domains.transfer.updateStatus\",\r\n DOMAINS_TRANSFER_GETLIST = \"namecheap.domains.transfer.getList\",\r\n\r\n // ssl\r\n SSL_CREATE = \"namecheap.ssl.create\",\r\n SSL_GETLIST = \"namecheap.ssl.getList\",\r\n SSL_PARSECSR = \"namecheap.ssl.parseCSR\",\r\n SSL_GETAPPROVEREMAILLIST = \"namecheap.ssl.getApproverEmailList\",\r\n SSL_ACTIVATE = \"namecheap.ssl.activate\",\r\n SSL_RESENDAPPROVEREMAIL = \"namecheap.ssl.resendApproverEmail\",\r\n SSL_GETINFO = \"namecheap.ssl.getInfo\",\r\n SSL_RENEW = \"namecheap.ssl.renew\",\r\n SSL_REISSUE = \"namecheap.ssl.reissue\",\r\n SSL_RESENDFULFILLMENTEMAIL = \"namecheap.ssl.resendfulfillmentemail\",\r\n SSL_PURCHASEMORESANS = \"namecheap.ssl.purchasemoresans\",\r\n SSL_REVOKECERTIFICATE = \"namecheap.ssl.revokecertificate\",\r\n SSL_EDITDCVMETHOD = \"namecheap.ssl.editDCVMethod\",\r\n\r\n // users\r\n USERS_GETPRICING = \"namecheap.users.getPricing\",\r\n USERS_GETBALANCES = \"namecheap.users.getBalances\",\r\n USERS_CHANGEPASSWORD = \"namecheap.users.changePassword\",\r\n USERS_UPDATE = \"namecheap.users.update\",\r\n USERS_CREATEADDFUNDSREQUEST = \"namecheap.users.createaddfundsrequest\",\r\n USERS_GETADDFUNDSSTATUS = \"namecheap.users.getAddFundsStatus\",\r\n USERS_CREATE = \"namecheap.users.create\",\r\n USERS_LOGIN = \"namecheap.users.login\",\r\n USERS_RESETPASSWORD = \"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_GETINFO = \"namecheap.users.address.getInfo\",\r\n USERS_ADDRESS_GETLIST = \"namecheap.users.address.getList\",\r\n USERS_ADDRESS_SETDEFAULT = \"namecheap.users.address.setDefault\",\r\n USERS_ADDRESS_UPDATE = \"namecheap.users.address.update\",\r\n\r\n // domainprivacy\r\n WHOISGUARD_CHANGEEMAILADDRESS = \"Namecheap.Whoisguard.changeemailaddress\",\r\n WHOISGUARD_ENABLE = \"Namecheap.Whoisguard.enable\",\r\n WHOISGUARD_DISABLE = \"Namecheap.Whoisguard.disable\",\r\n WHOISGUARD_GETLIST = \"Namecheap.Whoisguard.getList\",\r\n WHOISGUARD_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 IReponse<T = any> {\r\n data: T;\r\n status: number;\r\n}\r\n\r\nexport type ICheckDomainResponse = IReponse<{\r\n availabe: boolean;\r\n premium: boolean;\r\n}>;\r\n\r\nexport type IRegisterDomainResponse = IReponse<{\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 = IReponse<{\r\n tokenId: string;\r\n returnURL: string;\r\n redirectURL: string;\r\n}>;\r\n\r\nexport type IGetFundsStatusResponse = IReponse<{\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 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 async get(url: string) {\r\n return await this._client.get(url);\r\n }\r\n\r\n 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 {\r\n constructor() {\r\n super(\"Invalid XML response\");\r\n\r\n this.name = \"XMLParsingError\";\r\n }\r\n}\r\n\r\nexport class ResponseError extends Error {\r\n constructor(message: string, readonly code?: number) {\r\n super((code ? `${code}: ` : \"\") + message);\r\n\r\n this.name = \"ResponseError\";\r\n }\r\n}\r\n","import { parseStringPromise } from \"xml2js\";\r\n\r\nexport function parseXMLString(xml: string): Promise<any> {\r\n return parseStringPromise(xml, {\r\n explicitArray: false,\r\n attrValueProcessors: [transformValues],\r\n });\r\n}\r\n\r\nfunction transformValues(value: string, name: string) {\r\n // check boolean\r\n if (value === \"false\" || value === \"true\") {\r\n return value === \"true\";\r\n }\r\n\r\n // check numbers\r\n if (!isNaN(+value)) {\r\n return +value;\r\n }\r\n\r\n return value;\r\n}\r\n","export class InvalidDomainNameException extends Error {\r\n constructor(domainName: string) {\r\n super(`The provided domain name [${domainName}] is not valid`);\r\n\r\n this.name = \"InvalidDomainNameException\";\r\n }\r\n}\r\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 IReponse,\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 constructor(private readonly config: INamecheapConfig, sandbox?: boolean) {\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 async call(command: Command, payload: Payload): Promise<IReponse> {\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 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 availabe: 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 async getDomainPrice(\r\n domainName: string,\r\n action: DomainPriceAction\r\n ): Promise<IReponse<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_GETPRICING, {\r\n ProductType: \"DOMAIN\",\r\n ProductCategory: \"DOMAINS\",\r\n ActionName: action,\r\n ProductName: tld,\r\n });\r\n\r\n const pricing: object[] = (\r\n data.UserGetPricingResult?.ProductType?.ProductCategory?.Product?.Price ||\r\n []\r\n ).map((price: any) => ({ ...price.$ }));\r\n\r\n return { data: pricing, status };\r\n }\r\n\r\n async registerDomain(payload: Payload): 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 async addFundsRequest(\r\n payload: AddFundsRequestPayload\r\n ): Promise<IAddFundsRequestResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_CREATEADDFUNDSREQUEST,\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 async getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse> {\r\n const { data, status } = await this.call(Commands.USERS_GETADDFUNDSSTATUS, {\r\n tokenId,\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":"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","names":["Commands","DomainPriceActions","axios"]}
1
+ {"version":3,"sources":["../src/index.ts","../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 * from \"./commands\";\r\nexport * from \"./types\";\r\nexport * from \"./namecheap\";\r\nexport { default } from \"./namecheap\";\r\n","export enum Commands {\r\n // domains\r\n DOMAINS_GETLIST = \"namecheap.domains.getList\",\r\n DOMAINS_GETCONTACTS = \"namecheap.domains.getContacts\",\r\n DOMAINS_CREATE = \"namecheap.domains.create\",\r\n DOMAINS_GETTLDLIST = \"namecheap.domains.getTldList\",\r\n DOMAINS_SETCONTACTS = \"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_GETREGISTRARLOCK = \"namecheap.domains.getRegistrarLock\",\r\n DOMAINS_SETREGISTRARLOCK = \"namecheap.domains.setRegistrarLock\",\r\n DOMAINS_GETINFO = \"namecheap.domains.getInfo\",\r\n\r\n // domains.dns\r\n DOMAINS_DNS_SETDEFAULT = \"namecheap.domains.dns.setDefault\",\r\n DOMAINS_DNS_SETCUSTOM = \"namecheap.domains.dns.setCustom\",\r\n DOMAINS_DNS_GETLIST = \"namecheap.domains.dns.getList\",\r\n DOMAINS_DNS_GETHOSTS = \"namecheap.domains.dns.getHosts\",\r\n DOMAINS_DNS_GETEMAILFORWARDING = \"namecheap.domains.dns.getEmailForwarding\",\r\n DOMAINS_DNS_SETEMAILFORWARDING = \"namecheap.domains.dns.setEmailForwarding\",\r\n DOMAINS_DNS_SETHOSTS = \"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_GETINFO = \"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_GETSTATUS = \"namecheap.domains.transfer.getStatus\",\r\n DOMAINS_TRANSFER_UPDATESTATUS = \"namecheap.domains.transfer.updateStatus\",\r\n DOMAINS_TRANSFER_GETLIST = \"namecheap.domains.transfer.getList\",\r\n\r\n // ssl\r\n SSL_CREATE = \"namecheap.ssl.create\",\r\n SSL_GETLIST = \"namecheap.ssl.getList\",\r\n SSL_PARSECSR = \"namecheap.ssl.parseCSR\",\r\n SSL_GETAPPROVEREMAILLIST = \"namecheap.ssl.getApproverEmailList\",\r\n SSL_ACTIVATE = \"namecheap.ssl.activate\",\r\n SSL_RESENDAPPROVEREMAIL = \"namecheap.ssl.resendApproverEmail\",\r\n SSL_GETINFO = \"namecheap.ssl.getInfo\",\r\n SSL_RENEW = \"namecheap.ssl.renew\",\r\n SSL_REISSUE = \"namecheap.ssl.reissue\",\r\n SSL_RESENDFULFILLMENTEMAIL = \"namecheap.ssl.resendfulfillmentemail\",\r\n SSL_PURCHASEMORESANS = \"namecheap.ssl.purchasemoresans\",\r\n SSL_REVOKECERTIFICATE = \"namecheap.ssl.revokecertificate\",\r\n SSL_EDITDCVMETHOD = \"namecheap.ssl.editDCVMethod\",\r\n\r\n // users\r\n USERS_GETPRICING = \"namecheap.users.getPricing\",\r\n USERS_GETBALANCES = \"namecheap.users.getBalances\",\r\n USERS_CHANGEPASSWORD = \"namecheap.users.changePassword\",\r\n USERS_UPDATE = \"namecheap.users.update\",\r\n USERS_CREATEADDFUNDSREQUEST = \"namecheap.users.createaddfundsrequest\",\r\n USERS_GETADDFUNDSSTATUS = \"namecheap.users.getAddFundsStatus\",\r\n USERS_CREATE = \"namecheap.users.create\",\r\n USERS_LOGIN = \"namecheap.users.login\",\r\n USERS_RESETPASSWORD = \"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_GETINFO = \"namecheap.users.address.getInfo\",\r\n USERS_ADDRESS_GETLIST = \"namecheap.users.address.getList\",\r\n USERS_ADDRESS_SETDEFAULT = \"namecheap.users.address.setDefault\",\r\n USERS_ADDRESS_UPDATE = \"namecheap.users.address.update\",\r\n\r\n // domainprivacy\r\n WHOISGUARD_CHANGEEMAILADDRESS = \"Namecheap.Whoisguard.changeemailaddress\",\r\n WHOISGUARD_ENABLE = \"Namecheap.Whoisguard.enable\",\r\n WHOISGUARD_DISABLE = \"Namecheap.Whoisguard.disable\",\r\n WHOISGUARD_GETLIST = \"Namecheap.Whoisguard.getList\",\r\n WHOISGUARD_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 IReponse<T = any> {\r\n data: T;\r\n status: number;\r\n}\r\n\r\nexport type ICheckDomainResponse = IReponse<{\r\n availabe: boolean;\r\n premium: boolean;\r\n}>;\r\n\r\nexport type IRegisterDomainResponse = IReponse<{\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 = IReponse<{\r\n tokenId: string;\r\n returnURL: string;\r\n redirectURL: string;\r\n}>;\r\n\r\nexport type IGetFundsStatusResponse = IReponse<{\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 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 async get(url: string) {\r\n return await this._client.get(url);\r\n }\r\n\r\n 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 {\r\n constructor() {\r\n super(\"Invalid XML response\");\r\n\r\n this.name = \"XMLParsingError\";\r\n }\r\n}\r\n\r\nexport class ResponseError extends Error {\r\n constructor(message: string, readonly code?: number) {\r\n super((code ? `${code}: ` : \"\") + message);\r\n\r\n this.name = \"ResponseError\";\r\n }\r\n}\r\n","import { parseStringPromise } from \"xml2js\";\r\n\r\nexport function parseXMLString(xml: string): Promise<any> {\r\n return parseStringPromise(xml, {\r\n explicitArray: false,\r\n attrValueProcessors: [transformValues],\r\n });\r\n}\r\n\r\nfunction transformValues(value: string, name: string) {\r\n // check boolean\r\n if (value === \"false\" || value === \"true\") {\r\n return value === \"true\";\r\n }\r\n\r\n // check numbers\r\n if (!isNaN(+value)) {\r\n return +value;\r\n }\r\n\r\n return value;\r\n}\r\n","export class InvalidDomainNameException extends Error {\r\n constructor(domainName: string) {\r\n super(`The provided domain name [${domainName}] is not valid`);\r\n\r\n this.name = \"InvalidDomainNameException\";\r\n }\r\n}\r\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 IReponse,\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 constructor(private readonly config: INamecheapConfig, sandbox?: boolean) {\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 async call(command: Command, payload: Payload): Promise<IReponse> {\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 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 availabe: 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 async getDomainPrice(\r\n domainName: string,\r\n action: DomainPriceAction\r\n ): Promise<IReponse<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_GETPRICING, {\r\n ProductType: \"DOMAIN\",\r\n ProductCategory: \"DOMAINS\",\r\n ActionName: action,\r\n ProductName: tld,\r\n });\r\n\r\n const pricing: object[] = (\r\n data.UserGetPricingResult?.ProductType?.ProductCategory?.Product?.Price ||\r\n []\r\n ).map((price: any) => ({ ...price.$ }));\r\n\r\n return { data: pricing, status };\r\n }\r\n\r\n async registerDomain(payload: Payload): 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 async addFundsRequest(\r\n payload: AddFundsRequestPayload\r\n ): Promise<IAddFundsRequestResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_CREATEADDFUNDSREQUEST,\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 async getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse> {\r\n const { data, status } = await this.call(Commands.USERS_GETADDFUNDSSTATUS, {\r\n tokenId,\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAO,IAAK,WAAL,kBAAKA,cAAL;AAEL,EAAAA,UAAA,qBAAkB;AAClB,EAAAA,UAAA,yBAAsB;AACtB,EAAAA,UAAA,oBAAiB;AACjB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,yBAAsB;AACtB,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,mBAAgB;AAChB,EAAAA,UAAA,8BAA2B;AAC3B,EAAAA,UAAA,8BAA2B;AAC3B,EAAAA,UAAA,qBAAkB;AAGlB,EAAAA,UAAA,4BAAyB;AACzB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,yBAAsB;AACtB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,oCAAiC;AACjC,EAAAA,UAAA,oCAAiC;AACjC,EAAAA,UAAA,0BAAuB;AAGvB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,uBAAoB;AAGpB,EAAAA,UAAA,6BAA0B;AAC1B,EAAAA,UAAA,gCAA6B;AAC7B,EAAAA,UAAA,mCAAgC;AAChC,EAAAA,UAAA,8BAA2B;AAG3B,EAAAA,UAAA,gBAAa;AACb,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,8BAA2B;AAC3B,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,6BAA0B;AAC1B,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,eAAY;AACZ,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,gCAA6B;AAC7B,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,uBAAoB;AAGpB,EAAAA,UAAA,sBAAmB;AACnB,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,iCAA8B;AAC9B,EAAAA,UAAA,6BAA0B;AAC1B,EAAAA,UAAA,kBAAe;AACf,EAAAA,UAAA,iBAAc;AACd,EAAAA,UAAA,yBAAsB;AAGtB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,0BAAuB;AACvB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,2BAAwB;AACxB,EAAAA,UAAA,8BAA2B;AAC3B,EAAAA,UAAA,0BAAuB;AAGvB,EAAAA,UAAA,mCAAgC;AAChC,EAAAA,UAAA,uBAAoB;AACpB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,wBAAqB;AACrB,EAAAA,UAAA,sBAAmB;AA1ET,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,mBAAoD;;;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,oBAAmC;AAE5B,SAAS,eAAe,KAA2B;AACxD,aAAO,kCAAmB,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,EAEd,YAAY,SAAiB;AAC3B,SAAK,UAAU,aAAAC,QAAM,OAAO,EAAE,QAAQ,CAAC;AACvC,SAAK,QAAQ,aAAa,SAAS,IAAI,KAAK,UAAU;AAAA,EACxD;AAAA,EAEM,IAAI,KAAa;AAAA;AACrB,aAAO,MAAM,KAAK,QAAQ,IAAI,GAAG;AAAA,IACnC;AAAA;AAAA,EAEM,KAAK,KAAa;AAAA;AACtB,aAAO,MAAM,KAAK,QAAQ,KAAK,GAAG;AAAA,IACpC;AAAA;AAAA,EAEc,WAAW,UAAiD;AAAA;AACxE,UAAI;AACF,cAAM,SAAS,MAAM,eAAe,SAAS,IAAI;AAEjD,YAAI,OAAO,YAAY,EAAE,WAAW,SAAS;AAC3C,gBAAM,iBAAiB,OAAO,YAAY;AAC1C,gBAAM,OAAO,eAAe,MAAM,EAAE;AACpC,gBAAM,UAAU,eAAe,MAAM;AAErC,gBAAM,IAAI,cAAc,SAAS,IAAI;AAAA,QACvC;AAEA,iBAAS,OAAO,OAAO,YAAY;AAAA,MACrC,SAAS,KAAK;AACZ,iBAAS,SAAS;AAClB,YAAI,eAAe,eAAe;AAChC,gBAAM;AAAA,QACR;AAEA,cAAM,IAAI,gBAAgB;AAAA,MAC5B;AAEA,aAAO;AAAA,IACT;AAAA;AACF;AAEA,IAAO,qBAAQ;;;AG7CR,IAAM,6BAAN,cAAyC,MAAM;AAAA,EACpD,YAAY,YAAoB;AAC9B,UAAM,6BAA6B,UAAU,gBAAgB;AAE7D,SAAK,OAAO;AAAA,EACd;AACF;;;ACeA,IAAM,YAAN,MAAgB;AAAA,EAEd,YAA6B,QAA0B,SAAmB;AAA7C;AAC3B,UAAM,UAAU,cACd,UAAU,aAAa,EACzB;AACA,SAAK,YAAY,IAAI,mBAAU,OAAO;AAAA,EACxC;AAAA,EAEM,KAAK,SAAkB,SAAqC;AAAA;AAChE,YAAgC,UAAK,QAA7B,WA/BZ,IA+BoC,IAAX,mBAAW,IAAX,CAAb;AAER,YAAM,SAAS;AAAA,QACb;AAAA,SACG,UACA,SAHU;AAAA,QAIb;AAAA,MACF;AAEA,YAAM,MAAM,MAAM,IAAI,gBAAgB,MAAM,EAAE,SAAS;AAEvD,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,UAAU,KAAK,GAAG;AAEtD,aAAO,EAAE,MAAM,OAAO;AAAA,IACxB;AAAA;AAAA,EAEM,YAAY,YAAmD;AAAA;AACnE,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,oDAA6B;AAAA,QAC/D,YAAY;AAAA,MACd,CAAC;AAED,YAAM,WAAiC;AAAA,QACrC,MAAM;AAAA,UACJ,UAAU,KAAK,kBAAkB,EAAE;AAAA,UACnC,SAAS,KAAK,kBAAkB,EAAE;AAAA,QACpC;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,EAEM,eACJ,YACA,QAC6B;AAAA;AAlEjC;AAmEI,YAAM,CAAC,GAAG,GAAG,IAAI,WAAW,MAAM,GAAG;AACrC,UAAI,CAAC,KAAK;AACR,cAAM,IAAI,2BAA2B,UAAU;AAAA,MACjD;AAEA,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,0DAAgC;AAAA,QAClE,aAAa;AAAA,QACb,iBAAiB;AAAA,QACjB,YAAY;AAAA,QACZ,aAAa;AAAA,MACf,CAAC;AAED,YAAM,aACJ,4BAAK,yBAAL,mBAA2B,gBAA3B,mBAAwC,oBAAxC,mBAAyD,YAAzD,mBAAkE,UAClE,CAAC,GACD,IAAI,CAAC,UAAgB,mBAAK,MAAM,EAAI;AAEtC,aAAO,EAAE,MAAM,SAAS,OAAO;AAAA,IACjC;AAAA;AAAA,EAEM,eAAe,SAAoD;AAAA;AAvF3E;AAwFI,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,sDAA8B,OAAO;AAEzE,YAAM,UAAS,kCAAM,uBAAN,mBAA0B;AAEzC,YAAM,WAAoC;AAAA,QACxC,MAAM;AAAA,UACJ,QAAQ,OAAO;AAAA,UACf,YAAY,OAAO;AAAA,UACnB,eAAe,OAAO;AAAA,UACtB,UAAU,OAAO;AAAA,UACjB,SAAS,OAAO;AAAA,UAChB,eAAe,OAAO;AAAA,UACtB,kBAAkB,OAAO;AAAA,UACzB,iBAAiB,OAAO;AAAA,UACxB,mBAAmB,OAAO;AAAA,QAC5B;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,EAEM,gBACJ,SACmC;AAAA;AACnC,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK;AAAA;AAAA,QAElC;AAAA,MACF;AAEA,YAAM,SAAS,KAAK,4BAA4B;AAEhD,YAAM,WAAqC;AAAA,QACzC,MAAM;AAAA,UACJ,SAAS,OAAO;AAAA,UAChB,WAAW,OAAO;AAAA,UAClB,aAAa,OAAO;AAAA,QACtB;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AAAA,EAEM,eAAe,SAAmD;AAAA;AACtE,YAAM,EAAE,MAAM,OAAO,IAAI,MAAM,KAAK,wEAAuC;AAAA,QACzE;AAAA,MACF,CAAC;AAED,YAAM,SAAS,KAAK,wBAAwB;AAE5C,YAAM,WAAoC;AAAA,QACxC,MAAM;AAAA,UACJ,QAAQ,OAAO;AAAA,UACf,QAAQ,OAAO;AAAA,QACjB;AAAA,QACA;AAAA,MACF;AAEA,aAAO;AAAA,IACT;AAAA;AACF;AAEA,IAAO,oBAAQ;","names":["Commands","DomainPriceActions","axios"]}
@@ -1 +1 @@
1
- {"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_GETLIST = \"namecheap.domains.getList\",\r\n DOMAINS_GETCONTACTS = \"namecheap.domains.getContacts\",\r\n DOMAINS_CREATE = \"namecheap.domains.create\",\r\n DOMAINS_GETTLDLIST = \"namecheap.domains.getTldList\",\r\n DOMAINS_SETCONTACTS = \"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_GETREGISTRARLOCK = \"namecheap.domains.getRegistrarLock\",\r\n DOMAINS_SETREGISTRARLOCK = \"namecheap.domains.setRegistrarLock\",\r\n DOMAINS_GETINFO = \"namecheap.domains.getInfo\",\r\n\r\n // domains.dns\r\n DOMAINS_DNS_SETDEFAULT = \"namecheap.domains.dns.setDefault\",\r\n DOMAINS_DNS_SETCUSTOM = \"namecheap.domains.dns.setCustom\",\r\n DOMAINS_DNS_GETLIST = \"namecheap.domains.dns.getList\",\r\n DOMAINS_DNS_GETHOSTS = \"namecheap.domains.dns.getHosts\",\r\n DOMAINS_DNS_GETEMAILFORWARDING = \"namecheap.domains.dns.getEmailForwarding\",\r\n DOMAINS_DNS_SETEMAILFORWARDING = \"namecheap.domains.dns.setEmailForwarding\",\r\n DOMAINS_DNS_SETHOSTS = \"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_GETINFO = \"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_GETSTATUS = \"namecheap.domains.transfer.getStatus\",\r\n DOMAINS_TRANSFER_UPDATESTATUS = \"namecheap.domains.transfer.updateStatus\",\r\n DOMAINS_TRANSFER_GETLIST = \"namecheap.domains.transfer.getList\",\r\n\r\n // ssl\r\n SSL_CREATE = \"namecheap.ssl.create\",\r\n SSL_GETLIST = \"namecheap.ssl.getList\",\r\n SSL_PARSECSR = \"namecheap.ssl.parseCSR\",\r\n SSL_GETAPPROVEREMAILLIST = \"namecheap.ssl.getApproverEmailList\",\r\n SSL_ACTIVATE = \"namecheap.ssl.activate\",\r\n SSL_RESENDAPPROVEREMAIL = \"namecheap.ssl.resendApproverEmail\",\r\n SSL_GETINFO = \"namecheap.ssl.getInfo\",\r\n SSL_RENEW = \"namecheap.ssl.renew\",\r\n SSL_REISSUE = \"namecheap.ssl.reissue\",\r\n SSL_RESENDFULFILLMENTEMAIL = \"namecheap.ssl.resendfulfillmentemail\",\r\n SSL_PURCHASEMORESANS = \"namecheap.ssl.purchasemoresans\",\r\n SSL_REVOKECERTIFICATE = \"namecheap.ssl.revokecertificate\",\r\n SSL_EDITDCVMETHOD = \"namecheap.ssl.editDCVMethod\",\r\n\r\n // users\r\n USERS_GETPRICING = \"namecheap.users.getPricing\",\r\n USERS_GETBALANCES = \"namecheap.users.getBalances\",\r\n USERS_CHANGEPASSWORD = \"namecheap.users.changePassword\",\r\n USERS_UPDATE = \"namecheap.users.update\",\r\n USERS_CREATEADDFUNDSREQUEST = \"namecheap.users.createaddfundsrequest\",\r\n USERS_GETADDFUNDSSTATUS = \"namecheap.users.getAddFundsStatus\",\r\n USERS_CREATE = \"namecheap.users.create\",\r\n USERS_LOGIN = \"namecheap.users.login\",\r\n USERS_RESETPASSWORD = \"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_GETINFO = \"namecheap.users.address.getInfo\",\r\n USERS_ADDRESS_GETLIST = \"namecheap.users.address.getList\",\r\n USERS_ADDRESS_SETDEFAULT = \"namecheap.users.address.setDefault\",\r\n USERS_ADDRESS_UPDATE = \"namecheap.users.address.update\",\r\n\r\n // domainprivacy\r\n WHOISGUARD_CHANGEEMAILADDRESS = \"Namecheap.Whoisguard.changeemailaddress\",\r\n WHOISGUARD_ENABLE = \"Namecheap.Whoisguard.enable\",\r\n WHOISGUARD_DISABLE = \"Namecheap.Whoisguard.disable\",\r\n WHOISGUARD_GETLIST = \"Namecheap.Whoisguard.getList\",\r\n WHOISGUARD_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 IReponse<T = any> {\r\n data: T;\r\n status: number;\r\n}\r\n\r\nexport type ICheckDomainResponse = IReponse<{\r\n availabe: boolean;\r\n premium: boolean;\r\n}>;\r\n\r\nexport type IRegisterDomainResponse = IReponse<{\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 = IReponse<{\r\n tokenId: string;\r\n returnURL: string;\r\n redirectURL: string;\r\n}>;\r\n\r\nexport type IGetFundsStatusResponse = IReponse<{\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 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 async get(url: string) {\r\n return await this._client.get(url);\r\n }\r\n\r\n 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 {\r\n constructor() {\r\n super(\"Invalid XML response\");\r\n\r\n this.name = \"XMLParsingError\";\r\n }\r\n}\r\n\r\nexport class ResponseError extends Error {\r\n constructor(message: string, readonly code?: number) {\r\n super((code ? `${code}: ` : \"\") + message);\r\n\r\n this.name = \"ResponseError\";\r\n }\r\n}\r\n","import { parseStringPromise } from \"xml2js\";\r\n\r\nexport function parseXMLString(xml: string): Promise<any> {\r\n return parseStringPromise(xml, {\r\n explicitArray: false,\r\n attrValueProcessors: [transformValues],\r\n });\r\n}\r\n\r\nfunction transformValues(value: string, name: string) {\r\n // check boolean\r\n if (value === \"false\" || value === \"true\") {\r\n return value === \"true\";\r\n }\r\n\r\n // check numbers\r\n if (!isNaN(+value)) {\r\n return +value;\r\n }\r\n\r\n return value;\r\n}\r\n","export class InvalidDomainNameException extends Error {\r\n constructor(domainName: string) {\r\n super(`The provided domain name [${domainName}] is not valid`);\r\n\r\n this.name = \"InvalidDomainNameException\";\r\n }\r\n}\r\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 IReponse,\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 constructor(private readonly config: INamecheapConfig, sandbox?: boolean) {\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 async call(command: Command, payload: Payload): Promise<IReponse> {\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 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 availabe: 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 async getDomainPrice(\r\n domainName: string,\r\n action: DomainPriceAction\r\n ): Promise<IReponse<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_GETPRICING, {\r\n ProductType: \"DOMAIN\",\r\n ProductCategory: \"DOMAINS\",\r\n ActionName: action,\r\n ProductName: tld,\r\n });\r\n\r\n const pricing: object[] = (\r\n data.UserGetPricingResult?.ProductType?.ProductCategory?.Product?.Price ||\r\n []\r\n ).map((price: any) => ({ ...price.$ }));\r\n\r\n return { data: pricing, status };\r\n }\r\n\r\n async registerDomain(payload: Payload): 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 async addFundsRequest(\r\n payload: AddFundsRequestPayload\r\n ): Promise<IAddFundsRequestResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_CREATEADDFUNDSREQUEST,\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 async getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse> {\r\n const { data, status } = await this.call(Commands.USERS_GETADDFUNDSSTATUS, {\r\n tokenId,\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":"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","names":["Commands","DomainPriceActions"]}
1
+ {"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_GETLIST = \"namecheap.domains.getList\",\r\n DOMAINS_GETCONTACTS = \"namecheap.domains.getContacts\",\r\n DOMAINS_CREATE = \"namecheap.domains.create\",\r\n DOMAINS_GETTLDLIST = \"namecheap.domains.getTldList\",\r\n DOMAINS_SETCONTACTS = \"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_GETREGISTRARLOCK = \"namecheap.domains.getRegistrarLock\",\r\n DOMAINS_SETREGISTRARLOCK = \"namecheap.domains.setRegistrarLock\",\r\n DOMAINS_GETINFO = \"namecheap.domains.getInfo\",\r\n\r\n // domains.dns\r\n DOMAINS_DNS_SETDEFAULT = \"namecheap.domains.dns.setDefault\",\r\n DOMAINS_DNS_SETCUSTOM = \"namecheap.domains.dns.setCustom\",\r\n DOMAINS_DNS_GETLIST = \"namecheap.domains.dns.getList\",\r\n DOMAINS_DNS_GETHOSTS = \"namecheap.domains.dns.getHosts\",\r\n DOMAINS_DNS_GETEMAILFORWARDING = \"namecheap.domains.dns.getEmailForwarding\",\r\n DOMAINS_DNS_SETEMAILFORWARDING = \"namecheap.domains.dns.setEmailForwarding\",\r\n DOMAINS_DNS_SETHOSTS = \"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_GETINFO = \"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_GETSTATUS = \"namecheap.domains.transfer.getStatus\",\r\n DOMAINS_TRANSFER_UPDATESTATUS = \"namecheap.domains.transfer.updateStatus\",\r\n DOMAINS_TRANSFER_GETLIST = \"namecheap.domains.transfer.getList\",\r\n\r\n // ssl\r\n SSL_CREATE = \"namecheap.ssl.create\",\r\n SSL_GETLIST = \"namecheap.ssl.getList\",\r\n SSL_PARSECSR = \"namecheap.ssl.parseCSR\",\r\n SSL_GETAPPROVEREMAILLIST = \"namecheap.ssl.getApproverEmailList\",\r\n SSL_ACTIVATE = \"namecheap.ssl.activate\",\r\n SSL_RESENDAPPROVEREMAIL = \"namecheap.ssl.resendApproverEmail\",\r\n SSL_GETINFO = \"namecheap.ssl.getInfo\",\r\n SSL_RENEW = \"namecheap.ssl.renew\",\r\n SSL_REISSUE = \"namecheap.ssl.reissue\",\r\n SSL_RESENDFULFILLMENTEMAIL = \"namecheap.ssl.resendfulfillmentemail\",\r\n SSL_PURCHASEMORESANS = \"namecheap.ssl.purchasemoresans\",\r\n SSL_REVOKECERTIFICATE = \"namecheap.ssl.revokecertificate\",\r\n SSL_EDITDCVMETHOD = \"namecheap.ssl.editDCVMethod\",\r\n\r\n // users\r\n USERS_GETPRICING = \"namecheap.users.getPricing\",\r\n USERS_GETBALANCES = \"namecheap.users.getBalances\",\r\n USERS_CHANGEPASSWORD = \"namecheap.users.changePassword\",\r\n USERS_UPDATE = \"namecheap.users.update\",\r\n USERS_CREATEADDFUNDSREQUEST = \"namecheap.users.createaddfundsrequest\",\r\n USERS_GETADDFUNDSSTATUS = \"namecheap.users.getAddFundsStatus\",\r\n USERS_CREATE = \"namecheap.users.create\",\r\n USERS_LOGIN = \"namecheap.users.login\",\r\n USERS_RESETPASSWORD = \"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_GETINFO = \"namecheap.users.address.getInfo\",\r\n USERS_ADDRESS_GETLIST = \"namecheap.users.address.getList\",\r\n USERS_ADDRESS_SETDEFAULT = \"namecheap.users.address.setDefault\",\r\n USERS_ADDRESS_UPDATE = \"namecheap.users.address.update\",\r\n\r\n // domainprivacy\r\n WHOISGUARD_CHANGEEMAILADDRESS = \"Namecheap.Whoisguard.changeemailaddress\",\r\n WHOISGUARD_ENABLE = \"Namecheap.Whoisguard.enable\",\r\n WHOISGUARD_DISABLE = \"Namecheap.Whoisguard.disable\",\r\n WHOISGUARD_GETLIST = \"Namecheap.Whoisguard.getList\",\r\n WHOISGUARD_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 IReponse<T = any> {\r\n data: T;\r\n status: number;\r\n}\r\n\r\nexport type ICheckDomainResponse = IReponse<{\r\n availabe: boolean;\r\n premium: boolean;\r\n}>;\r\n\r\nexport type IRegisterDomainResponse = IReponse<{\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 = IReponse<{\r\n tokenId: string;\r\n returnURL: string;\r\n redirectURL: string;\r\n}>;\r\n\r\nexport type IGetFundsStatusResponse = IReponse<{\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 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 async get(url: string) {\r\n return await this._client.get(url);\r\n }\r\n\r\n 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 {\r\n constructor() {\r\n super(\"Invalid XML response\");\r\n\r\n this.name = \"XMLParsingError\";\r\n }\r\n}\r\n\r\nexport class ResponseError extends Error {\r\n constructor(message: string, readonly code?: number) {\r\n super((code ? `${code}: ` : \"\") + message);\r\n\r\n this.name = \"ResponseError\";\r\n }\r\n}\r\n","import { parseStringPromise } from \"xml2js\";\r\n\r\nexport function parseXMLString(xml: string): Promise<any> {\r\n return parseStringPromise(xml, {\r\n explicitArray: false,\r\n attrValueProcessors: [transformValues],\r\n });\r\n}\r\n\r\nfunction transformValues(value: string, name: string) {\r\n // check boolean\r\n if (value === \"false\" || value === \"true\") {\r\n return value === \"true\";\r\n }\r\n\r\n // check numbers\r\n if (!isNaN(+value)) {\r\n return +value;\r\n }\r\n\r\n return value;\r\n}\r\n","export class InvalidDomainNameException extends Error {\r\n constructor(domainName: string) {\r\n super(`The provided domain name [${domainName}] is not valid`);\r\n\r\n this.name = \"InvalidDomainNameException\";\r\n }\r\n}\r\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 IReponse,\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 constructor(private readonly config: INamecheapConfig, sandbox?: boolean) {\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 async call(command: Command, payload: Payload): Promise<IReponse> {\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 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 availabe: 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 async getDomainPrice(\r\n domainName: string,\r\n action: DomainPriceAction\r\n ): Promise<IReponse<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_GETPRICING, {\r\n ProductType: \"DOMAIN\",\r\n ProductCategory: \"DOMAINS\",\r\n ActionName: action,\r\n ProductName: tld,\r\n });\r\n\r\n const pricing: object[] = (\r\n data.UserGetPricingResult?.ProductType?.ProductCategory?.Product?.Price ||\r\n []\r\n ).map((price: any) => ({ ...price.$ }));\r\n\r\n return { data: pricing, status };\r\n }\r\n\r\n async registerDomain(payload: Payload): 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 async addFundsRequest(\r\n payload: AddFundsRequestPayload\r\n ): Promise<IAddFundsRequestResponse> {\r\n const { data, status } = await this.call(\r\n Commands.USERS_CREATEADDFUNDSREQUEST,\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 async getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse> {\r\n const { data, status } = await this.call(Commands.USERS_GETADDFUNDSSTATUS, {\r\n tokenId,\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":"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","names":["Commands","DomainPriceActions"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "namecheap-ts",
3
- "version": "1.0.4",
3
+ "version": "1.0.5",
4
4
  "description": "A simple wrapper for namecheap API",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",