namecheap-ts 1.0.3 → 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/README.md +54 -9
- package/dist/index.d.mts +45 -15
- package/dist/index.d.ts +45 -15
- package/dist/index.js +107 -15
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +107 -15
- package/dist/index.mjs.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -17,10 +17,10 @@ You can use the package to perform various operations such as domain registratio
|
|
|
17
17
|
```typescript
|
|
18
18
|
import Namecheap, { INamecheapConfig } from "namecheap-ts";
|
|
19
19
|
const config: INamecheapConfig = {
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
apiKey: "api-key",
|
|
21
|
+
apiUser: "api-user",
|
|
22
|
+
username: "user-name",
|
|
23
|
+
clientIp: "client-ip",
|
|
24
24
|
};
|
|
25
25
|
|
|
26
26
|
const api = new Namecheap(config, true);
|
|
@@ -28,7 +28,7 @@ const api = new Namecheap(config, true);
|
|
|
28
28
|
const payload = { DomainList: "mezoishere.net" };
|
|
29
29
|
const { data } = await api.call("namecheap.domains.check", payload);
|
|
30
30
|
|
|
31
|
-
const isAvailabe = data
|
|
31
|
+
const isAvailabe = data.DomainCheckResult.$.Available;
|
|
32
32
|
console.log(isAvailable);
|
|
33
33
|
```
|
|
34
34
|
|
|
@@ -44,7 +44,7 @@ Create a new instance of the `Namecheap` class.
|
|
|
44
44
|
const namecheap = new Namecheap(config, true);
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
#### `call(command: Command, payload:
|
|
47
|
+
#### `call(command: Command, payload: Payload): Promise<IReponse>`
|
|
48
48
|
|
|
49
49
|
Call a command on the Namecheap API.
|
|
50
50
|
|
|
@@ -62,14 +62,14 @@ console.log(response);
|
|
|
62
62
|
Check if a domain is available and if it'is premium.
|
|
63
63
|
|
|
64
64
|
```typescript
|
|
65
|
-
const {
|
|
65
|
+
const { data } = await namecheap.checkDomain("example.com");
|
|
66
66
|
|
|
67
|
-
console.log({ availabe, premium });
|
|
67
|
+
console.log({ availabe: data.availabe, premium: data.premium });
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
#### `getDomainPrice(domainName: string, action: DomainPriceAction): Promise<IReponse>`
|
|
71
71
|
|
|
72
|
-
Get the
|
|
72
|
+
Get the prices list of a domain.
|
|
73
73
|
|
|
74
74
|
```typescript
|
|
75
75
|
import { DomainPriceAction } from "namecheap-ts";
|
|
@@ -81,4 +81,49 @@ const response = await namecheap.getDomainPrice(
|
|
|
81
81
|
console.log(response);
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
+
#### `registerDomain(payload: Payload): Promise<IRegisterDomainResponse>`
|
|
85
|
+
|
|
86
|
+
Register domain in namecheap.
|
|
87
|
+
|
|
88
|
+
```typescript
|
|
89
|
+
const payload = {
|
|
90
|
+
DomainName: "mezoishere.co",
|
|
91
|
+
Years: 2,
|
|
92
|
+
// ...etc other attributes
|
|
93
|
+
};
|
|
94
|
+
|
|
95
|
+
const response = await namecheap.registerDomain(payload);
|
|
96
|
+
|
|
97
|
+
console.log(response);
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
#### `addFundsRequest(payload: AddFundsRequestPayload): Promise<IAddFundsRequestResponse>`
|
|
101
|
+
|
|
102
|
+
Add funds to the user account.
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
const payload = {
|
|
106
|
+
username: "username",
|
|
107
|
+
paymentType: "creditcard",
|
|
108
|
+
amount: 10,
|
|
109
|
+
returnURL: "the return url after payment is done",
|
|
110
|
+
};
|
|
111
|
+
|
|
112
|
+
const response = await namecheap.addFundsRequest(payload);
|
|
113
|
+
|
|
114
|
+
console.log(response);
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
#### `getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse>`
|
|
118
|
+
|
|
119
|
+
Check the status of a specific funds request.
|
|
120
|
+
|
|
121
|
+
```typescript
|
|
122
|
+
const tokenId = "the-token-id-of-the-created-funds-request"
|
|
123
|
+
|
|
124
|
+
const response = await namecheap.getFundsStatus(tokentId);
|
|
125
|
+
|
|
126
|
+
console.log(response);
|
|
127
|
+
```
|
|
128
|
+
|
|
84
129
|
You can refer to the official Namecheap API documentation for more information on the available methods and parameters. [The documentation is available at ¹](https://www.namecheap.com/support/api/intro/).
|
package/dist/index.d.mts
CHANGED
|
@@ -61,6 +61,35 @@ declare enum Commands {
|
|
|
61
61
|
}
|
|
62
62
|
type Command = `${Commands}`;
|
|
63
63
|
|
|
64
|
+
type Payload = Record<string, string | number>;
|
|
65
|
+
interface IReponse<T = any> {
|
|
66
|
+
data: T;
|
|
67
|
+
status: number;
|
|
68
|
+
}
|
|
69
|
+
type ICheckDomainResponse = IReponse<{
|
|
70
|
+
availabe: boolean;
|
|
71
|
+
premium: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
type IRegisterDomainResponse = IReponse<{
|
|
74
|
+
domain: string;
|
|
75
|
+
registered: boolean;
|
|
76
|
+
chargedAmount: number;
|
|
77
|
+
domainID: string;
|
|
78
|
+
orderID: string;
|
|
79
|
+
transactionID: string;
|
|
80
|
+
whoisguardEnable: boolean;
|
|
81
|
+
freePositiveSSL: boolean;
|
|
82
|
+
nonRealTimeDomain: boolean;
|
|
83
|
+
}>;
|
|
84
|
+
type IAddFundsRequestResponse = IReponse<{
|
|
85
|
+
tokenId: string;
|
|
86
|
+
returnURL: string;
|
|
87
|
+
redirectURL: string;
|
|
88
|
+
}>;
|
|
89
|
+
type IGetFundsStatusResponse = IReponse<{
|
|
90
|
+
status: string;
|
|
91
|
+
amount: number;
|
|
92
|
+
}>;
|
|
64
93
|
declare enum DomainPriceActions {
|
|
65
94
|
REGISTER = "REGISTER",
|
|
66
95
|
RENEW = "RENEW",
|
|
@@ -68,28 +97,29 @@ declare enum DomainPriceActions {
|
|
|
68
97
|
TRANSFER = "TRANSFER"
|
|
69
98
|
}
|
|
70
99
|
type DomainPriceAction = `${DomainPriceActions}`;
|
|
100
|
+
type AddFundsRequestPayload = {
|
|
101
|
+
username?: string;
|
|
102
|
+
paymentType: "creditcard";
|
|
103
|
+
amount: number;
|
|
104
|
+
returnURL: string;
|
|
105
|
+
};
|
|
71
106
|
|
|
72
107
|
interface INamecheapConfig {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
interface IReponse {
|
|
79
|
-
data: any;
|
|
80
|
-
status: number;
|
|
81
|
-
}
|
|
82
|
-
interface ICheckDomainResponse {
|
|
83
|
-
availabe: boolean;
|
|
84
|
-
premium: boolean;
|
|
108
|
+
apiUser: string;
|
|
109
|
+
apiKey: string;
|
|
110
|
+
username: string;
|
|
111
|
+
clientIp: string;
|
|
85
112
|
}
|
|
86
113
|
declare class Namecheap {
|
|
87
114
|
private readonly config;
|
|
88
115
|
private readonly apiClient;
|
|
89
116
|
constructor(config: INamecheapConfig, sandbox?: boolean);
|
|
90
|
-
call(command: Command, payload:
|
|
117
|
+
call(command: Command, payload: Payload): Promise<IReponse>;
|
|
91
118
|
checkDomain(domainName: string): Promise<ICheckDomainResponse>;
|
|
92
|
-
getDomainPrice(domainName: string, action: DomainPriceAction): Promise<IReponse
|
|
119
|
+
getDomainPrice(domainName: string, action: DomainPriceAction): Promise<IReponse<object[]>>;
|
|
120
|
+
registerDomain(payload: Payload): Promise<IRegisterDomainResponse>;
|
|
121
|
+
addFundsRequest(payload: AddFundsRequestPayload): Promise<IAddFundsRequestResponse>;
|
|
122
|
+
getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse>;
|
|
93
123
|
}
|
|
94
124
|
|
|
95
|
-
export { Command, Commands, DomainPriceAction, DomainPriceActions, ICheckDomainResponse, INamecheapConfig, IReponse, Namecheap as default };
|
|
125
|
+
export { AddFundsRequestPayload, Command, Commands, DomainPriceAction, DomainPriceActions, IAddFundsRequestResponse, ICheckDomainResponse, IGetFundsStatusResponse, INamecheapConfig, IRegisterDomainResponse, IReponse, Payload, Namecheap as default };
|
package/dist/index.d.ts
CHANGED
|
@@ -61,6 +61,35 @@ declare enum Commands {
|
|
|
61
61
|
}
|
|
62
62
|
type Command = `${Commands}`;
|
|
63
63
|
|
|
64
|
+
type Payload = Record<string, string | number>;
|
|
65
|
+
interface IReponse<T = any> {
|
|
66
|
+
data: T;
|
|
67
|
+
status: number;
|
|
68
|
+
}
|
|
69
|
+
type ICheckDomainResponse = IReponse<{
|
|
70
|
+
availabe: boolean;
|
|
71
|
+
premium: boolean;
|
|
72
|
+
}>;
|
|
73
|
+
type IRegisterDomainResponse = IReponse<{
|
|
74
|
+
domain: string;
|
|
75
|
+
registered: boolean;
|
|
76
|
+
chargedAmount: number;
|
|
77
|
+
domainID: string;
|
|
78
|
+
orderID: string;
|
|
79
|
+
transactionID: string;
|
|
80
|
+
whoisguardEnable: boolean;
|
|
81
|
+
freePositiveSSL: boolean;
|
|
82
|
+
nonRealTimeDomain: boolean;
|
|
83
|
+
}>;
|
|
84
|
+
type IAddFundsRequestResponse = IReponse<{
|
|
85
|
+
tokenId: string;
|
|
86
|
+
returnURL: string;
|
|
87
|
+
redirectURL: string;
|
|
88
|
+
}>;
|
|
89
|
+
type IGetFundsStatusResponse = IReponse<{
|
|
90
|
+
status: string;
|
|
91
|
+
amount: number;
|
|
92
|
+
}>;
|
|
64
93
|
declare enum DomainPriceActions {
|
|
65
94
|
REGISTER = "REGISTER",
|
|
66
95
|
RENEW = "RENEW",
|
|
@@ -68,28 +97,29 @@ declare enum DomainPriceActions {
|
|
|
68
97
|
TRANSFER = "TRANSFER"
|
|
69
98
|
}
|
|
70
99
|
type DomainPriceAction = `${DomainPriceActions}`;
|
|
100
|
+
type AddFundsRequestPayload = {
|
|
101
|
+
username?: string;
|
|
102
|
+
paymentType: "creditcard";
|
|
103
|
+
amount: number;
|
|
104
|
+
returnURL: string;
|
|
105
|
+
};
|
|
71
106
|
|
|
72
107
|
interface INamecheapConfig {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
interface IReponse {
|
|
79
|
-
data: any;
|
|
80
|
-
status: number;
|
|
81
|
-
}
|
|
82
|
-
interface ICheckDomainResponse {
|
|
83
|
-
availabe: boolean;
|
|
84
|
-
premium: boolean;
|
|
108
|
+
apiUser: string;
|
|
109
|
+
apiKey: string;
|
|
110
|
+
username: string;
|
|
111
|
+
clientIp: string;
|
|
85
112
|
}
|
|
86
113
|
declare class Namecheap {
|
|
87
114
|
private readonly config;
|
|
88
115
|
private readonly apiClient;
|
|
89
116
|
constructor(config: INamecheapConfig, sandbox?: boolean);
|
|
90
|
-
call(command: Command, payload:
|
|
117
|
+
call(command: Command, payload: Payload): Promise<IReponse>;
|
|
91
118
|
checkDomain(domainName: string): Promise<ICheckDomainResponse>;
|
|
92
|
-
getDomainPrice(domainName: string, action: DomainPriceAction): Promise<IReponse
|
|
119
|
+
getDomainPrice(domainName: string, action: DomainPriceAction): Promise<IReponse<object[]>>;
|
|
120
|
+
registerDomain(payload: Payload): Promise<IRegisterDomainResponse>;
|
|
121
|
+
addFundsRequest(payload: AddFundsRequestPayload): Promise<IAddFundsRequestResponse>;
|
|
122
|
+
getFundsStatus(tokenId: string): Promise<IGetFundsStatusResponse>;
|
|
93
123
|
}
|
|
94
124
|
|
|
95
|
-
export { Command, Commands, DomainPriceAction, DomainPriceActions, ICheckDomainResponse, INamecheapConfig, IReponse, Namecheap as default };
|
|
125
|
+
export { AddFundsRequestPayload, Command, Commands, DomainPriceAction, DomainPriceActions, IAddFundsRequestResponse, ICheckDomainResponse, IGetFundsStatusResponse, INamecheapConfig, IRegisterDomainResponse, IReponse, Payload, Namecheap as default };
|
package/dist/index.js
CHANGED
|
@@ -22,6 +22,18 @@ var __spreadValues = (a, b) => {
|
|
|
22
22
|
return a;
|
|
23
23
|
};
|
|
24
24
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
25
|
+
var __objRest = (source, exclude) => {
|
|
26
|
+
var target = {};
|
|
27
|
+
for (var prop in source)
|
|
28
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
29
|
+
target[prop] = source[prop];
|
|
30
|
+
if (source != null && __getOwnPropSymbols)
|
|
31
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
32
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
33
|
+
target[prop] = source[prop];
|
|
34
|
+
}
|
|
35
|
+
return target;
|
|
36
|
+
};
|
|
25
37
|
var __export = (target, all) => {
|
|
26
38
|
for (var name in all)
|
|
27
39
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
@@ -148,7 +160,6 @@ var DomainPriceActions = /* @__PURE__ */ ((DomainPriceActions2) => {
|
|
|
148
160
|
|
|
149
161
|
// src/api/api-client.ts
|
|
150
162
|
var import_axios = __toESM(require("axios"));
|
|
151
|
-
var import_xml2js = require("xml2js");
|
|
152
163
|
|
|
153
164
|
// src/api/errors.ts
|
|
154
165
|
var XMLParsingError = class extends Error {
|
|
@@ -165,6 +176,24 @@ var ResponseError = class extends Error {
|
|
|
165
176
|
}
|
|
166
177
|
};
|
|
167
178
|
|
|
179
|
+
// src/api/utils.ts
|
|
180
|
+
var import_xml2js = require("xml2js");
|
|
181
|
+
function parseXMLString(xml) {
|
|
182
|
+
return (0, import_xml2js.parseStringPromise)(xml, {
|
|
183
|
+
explicitArray: false,
|
|
184
|
+
attrValueProcessors: [transformValues]
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
function transformValues(value, name) {
|
|
188
|
+
if (value === "false" || value === "true") {
|
|
189
|
+
return value === "true";
|
|
190
|
+
}
|
|
191
|
+
if (!isNaN(+value)) {
|
|
192
|
+
return +value;
|
|
193
|
+
}
|
|
194
|
+
return value;
|
|
195
|
+
}
|
|
196
|
+
|
|
168
197
|
// src/api/api-client.ts
|
|
169
198
|
var APIClient = class {
|
|
170
199
|
constructor(baseURL) {
|
|
@@ -176,14 +205,19 @@ var APIClient = class {
|
|
|
176
205
|
return yield this._client.get(url);
|
|
177
206
|
});
|
|
178
207
|
}
|
|
208
|
+
post(url) {
|
|
209
|
+
return __async(this, null, function* () {
|
|
210
|
+
return yield this._client.post(url);
|
|
211
|
+
});
|
|
212
|
+
}
|
|
179
213
|
onResponse(response) {
|
|
180
214
|
return __async(this, null, function* () {
|
|
181
215
|
try {
|
|
182
|
-
const result = yield (
|
|
216
|
+
const result = yield parseXMLString(response.data);
|
|
183
217
|
if (result.ApiResponse.$.Status === "ERROR") {
|
|
184
218
|
const responseErrors = result.ApiResponse.Errors;
|
|
185
|
-
const code = responseErrors
|
|
186
|
-
const message = responseErrors
|
|
219
|
+
const code = responseErrors.Error.$.Number;
|
|
220
|
+
const message = responseErrors.Error._;
|
|
187
221
|
throw new ResponseError(message, code);
|
|
188
222
|
}
|
|
189
223
|
response.data = result.ApiResponse.CommandResponse;
|
|
@@ -217,31 +251,35 @@ var Namecheap = class {
|
|
|
217
251
|
}
|
|
218
252
|
call(command, payload) {
|
|
219
253
|
return __async(this, null, function* () {
|
|
220
|
-
const
|
|
254
|
+
const _a = this.config, { username } = _a, config = __objRest(_a, ["username"]);
|
|
255
|
+
const params = __spreadProps(__spreadValues(__spreadValues({
|
|
256
|
+
username
|
|
257
|
+
}, payload), config), {
|
|
221
258
|
command
|
|
222
259
|
});
|
|
223
260
|
const url = "?" + new URLSearchParams(params).toString();
|
|
224
|
-
const { data, status } = yield this.apiClient.
|
|
261
|
+
const { data, status } = yield this.apiClient.post(url);
|
|
225
262
|
return { data, status };
|
|
226
263
|
});
|
|
227
264
|
}
|
|
228
265
|
checkDomain(domainName) {
|
|
229
266
|
return __async(this, null, function* () {
|
|
230
|
-
const { data } = yield this.call("namecheap.domains.check" /* DOMAINS_CHECK */, {
|
|
267
|
+
const { data, status } = yield this.call("namecheap.domains.check" /* DOMAINS_CHECK */, {
|
|
231
268
|
DomainList: domainName
|
|
232
269
|
});
|
|
233
|
-
const isAvailabe = data[0].DomainCheckResult[0].$.Available;
|
|
234
|
-
const isPremium = data[0].DomainCheckResult[0].$.IsPremiumName;
|
|
235
270
|
const response = {
|
|
236
|
-
|
|
237
|
-
|
|
271
|
+
data: {
|
|
272
|
+
availabe: data.DomainCheckResult.$.Available,
|
|
273
|
+
premium: data.DomainCheckResult.$.IsPremiumName
|
|
274
|
+
},
|
|
275
|
+
status
|
|
238
276
|
};
|
|
239
277
|
return response;
|
|
240
278
|
});
|
|
241
279
|
}
|
|
242
280
|
getDomainPrice(domainName, action) {
|
|
243
281
|
return __async(this, null, function* () {
|
|
244
|
-
var _a, _b, _c, _d
|
|
282
|
+
var _a, _b, _c, _d;
|
|
245
283
|
const [_, tld] = domainName.split(".");
|
|
246
284
|
if (!tld) {
|
|
247
285
|
throw new InvalidDomainNameException(domainName);
|
|
@@ -252,12 +290,66 @@ var Namecheap = class {
|
|
|
252
290
|
ActionName: action,
|
|
253
291
|
ProductName: tld
|
|
254
292
|
});
|
|
255
|
-
const pricing = (
|
|
256
|
-
(price) => __spreadValues({}, price.$)
|
|
257
|
-
);
|
|
293
|
+
const pricing = (((_d = (_c = (_b = (_a = data.UserGetPricingResult) == null ? void 0 : _a.ProductType) == null ? void 0 : _b.ProductCategory) == null ? void 0 : _c.Product) == null ? void 0 : _d.Price) || []).map((price) => __spreadValues({}, price.$));
|
|
258
294
|
return { data: pricing, status };
|
|
259
295
|
});
|
|
260
296
|
}
|
|
297
|
+
registerDomain(payload) {
|
|
298
|
+
return __async(this, null, function* () {
|
|
299
|
+
var _a;
|
|
300
|
+
const { data, status } = yield this.call("namecheap.domains.create" /* DOMAINS_CREATE */, payload);
|
|
301
|
+
const result = (_a = data == null ? void 0 : data.DomainCreateResult) == null ? void 0 : _a.$;
|
|
302
|
+
const response = {
|
|
303
|
+
data: {
|
|
304
|
+
domain: result.Domain,
|
|
305
|
+
registered: result.Registered,
|
|
306
|
+
chargedAmount: result.ChargedAmount,
|
|
307
|
+
domainID: result.DomainID,
|
|
308
|
+
orderID: result.OrderID,
|
|
309
|
+
transactionID: result.TransactionID,
|
|
310
|
+
whoisguardEnable: result.WhoisguardEnable,
|
|
311
|
+
freePositiveSSL: result.FreePositiveSSL,
|
|
312
|
+
nonRealTimeDomain: result.NonRealTimeDomain
|
|
313
|
+
},
|
|
314
|
+
status
|
|
315
|
+
};
|
|
316
|
+
return response;
|
|
317
|
+
});
|
|
318
|
+
}
|
|
319
|
+
addFundsRequest(payload) {
|
|
320
|
+
return __async(this, null, function* () {
|
|
321
|
+
const { data, status } = yield this.call(
|
|
322
|
+
"namecheap.users.createaddfundsrequest" /* USERS_CREATEADDFUNDSREQUEST */,
|
|
323
|
+
payload
|
|
324
|
+
);
|
|
325
|
+
const result = data.Createaddfundsrequestresult.$;
|
|
326
|
+
const response = {
|
|
327
|
+
data: {
|
|
328
|
+
tokenId: result.TokenID,
|
|
329
|
+
returnURL: result.ReturnURL,
|
|
330
|
+
redirectURL: result.RedirectURL
|
|
331
|
+
},
|
|
332
|
+
status
|
|
333
|
+
};
|
|
334
|
+
return response;
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
getFundsStatus(tokenId) {
|
|
338
|
+
return __async(this, null, function* () {
|
|
339
|
+
const { data, status } = yield this.call("namecheap.users.getAddFundsStatus" /* USERS_GETADDFUNDSSTATUS */, {
|
|
340
|
+
tokenId
|
|
341
|
+
});
|
|
342
|
+
const result = data.GetAddFundsStatusResult.$;
|
|
343
|
+
const response = {
|
|
344
|
+
data: {
|
|
345
|
+
amount: result.Amount,
|
|
346
|
+
status: result.Status
|
|
347
|
+
},
|
|
348
|
+
status
|
|
349
|
+
};
|
|
350
|
+
return response;
|
|
351
|
+
});
|
|
352
|
+
}
|
|
261
353
|
};
|
|
262
354
|
var namecheap_default = Namecheap;
|
|
263
355
|
// Annotate the CommonJS export names for ESM import in node:
|
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/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 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","import axios, { AxiosInstance, AxiosResponse } from \"axios\";\r\nimport { parseStringPromise } from \"xml2js\";\r\nimport { ResponseError, XMLParsingError } from \"./errors\";\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 private async onResponse(response: AxiosResponse): Promise<AxiosResponse> {\r\n try {\r\n const result = await parseStringPromise(response.data);\r\n\r\n if (result.ApiResponse.$.Status === \"ERROR\") {\r\n const responseErrors = result.ApiResponse.Errors;\r\n const code = responseErrors[0].Error[0].$.Number;\r\n const message = responseErrors[0].Error[0]._;\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","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 { DomainPriceAction } 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\nexport interface IReponse {\r\n data: any;\r\n status: number;\r\n}\r\n\r\nexport interface ICheckDomainResponse {\r\n availabe: boolean;\r\n premium: boolean;\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(\r\n command: Command,\r\n payload: Record<string, string>\r\n ): Promise<IReponse> {\r\n const params = {\r\n ...payload,\r\n ...this.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.get(url);\r\n\r\n return { data, status };\r\n }\r\n\r\n async checkDomain(domainName: string): Promise<ICheckDomainResponse> {\r\n const { data } = await this.call(Commands.DOMAINS_CHECK, {\r\n DomainList: domainName,\r\n });\r\n\r\n const isAvailabe: string = data[0].DomainCheckResult[0].$.Available;\r\n const isPremium: string = data[0].DomainCheckResult[0].$.IsPremiumName;\r\n\r\n const response: ICheckDomainResponse = {\r\n availabe: isAvailabe === \"true\",\r\n premium: isPremium === \"true\",\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> {\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 =\r\n data[0].UserGetPricingResult[0]?.ProductType?.[0]?.ProductCategory?.[0]?.Product?.[0]?.Price?.map(\r\n (price: any) => ({ ...price.$ })\r\n );\r\n\r\n return { data: pricing, status };\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":"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","names":["Commands","DomainPriceActions","axios"]}
|
package/dist/index.mjs
CHANGED
|
@@ -17,6 +17,18 @@ var __spreadValues = (a, b) => {
|
|
|
17
17
|
return a;
|
|
18
18
|
};
|
|
19
19
|
var __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b));
|
|
20
|
+
var __objRest = (source, exclude) => {
|
|
21
|
+
var target = {};
|
|
22
|
+
for (var prop in source)
|
|
23
|
+
if (__hasOwnProp.call(source, prop) && exclude.indexOf(prop) < 0)
|
|
24
|
+
target[prop] = source[prop];
|
|
25
|
+
if (source != null && __getOwnPropSymbols)
|
|
26
|
+
for (var prop of __getOwnPropSymbols(source)) {
|
|
27
|
+
if (exclude.indexOf(prop) < 0 && __propIsEnum.call(source, prop))
|
|
28
|
+
target[prop] = source[prop];
|
|
29
|
+
}
|
|
30
|
+
return target;
|
|
31
|
+
};
|
|
20
32
|
var __async = (__this, __arguments, generator) => {
|
|
21
33
|
return new Promise((resolve, reject) => {
|
|
22
34
|
var fulfilled = (value) => {
|
|
@@ -113,7 +125,6 @@ var DomainPriceActions = /* @__PURE__ */ ((DomainPriceActions2) => {
|
|
|
113
125
|
|
|
114
126
|
// src/api/api-client.ts
|
|
115
127
|
import axios from "axios";
|
|
116
|
-
import { parseStringPromise } from "xml2js";
|
|
117
128
|
|
|
118
129
|
// src/api/errors.ts
|
|
119
130
|
var XMLParsingError = class extends Error {
|
|
@@ -130,6 +141,24 @@ var ResponseError = class extends Error {
|
|
|
130
141
|
}
|
|
131
142
|
};
|
|
132
143
|
|
|
144
|
+
// src/api/utils.ts
|
|
145
|
+
import { parseStringPromise } from "xml2js";
|
|
146
|
+
function parseXMLString(xml) {
|
|
147
|
+
return parseStringPromise(xml, {
|
|
148
|
+
explicitArray: false,
|
|
149
|
+
attrValueProcessors: [transformValues]
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
function transformValues(value, name) {
|
|
153
|
+
if (value === "false" || value === "true") {
|
|
154
|
+
return value === "true";
|
|
155
|
+
}
|
|
156
|
+
if (!isNaN(+value)) {
|
|
157
|
+
return +value;
|
|
158
|
+
}
|
|
159
|
+
return value;
|
|
160
|
+
}
|
|
161
|
+
|
|
133
162
|
// src/api/api-client.ts
|
|
134
163
|
var APIClient = class {
|
|
135
164
|
constructor(baseURL) {
|
|
@@ -141,14 +170,19 @@ var APIClient = class {
|
|
|
141
170
|
return yield this._client.get(url);
|
|
142
171
|
});
|
|
143
172
|
}
|
|
173
|
+
post(url) {
|
|
174
|
+
return __async(this, null, function* () {
|
|
175
|
+
return yield this._client.post(url);
|
|
176
|
+
});
|
|
177
|
+
}
|
|
144
178
|
onResponse(response) {
|
|
145
179
|
return __async(this, null, function* () {
|
|
146
180
|
try {
|
|
147
|
-
const result = yield
|
|
181
|
+
const result = yield parseXMLString(response.data);
|
|
148
182
|
if (result.ApiResponse.$.Status === "ERROR") {
|
|
149
183
|
const responseErrors = result.ApiResponse.Errors;
|
|
150
|
-
const code = responseErrors
|
|
151
|
-
const message = responseErrors
|
|
184
|
+
const code = responseErrors.Error.$.Number;
|
|
185
|
+
const message = responseErrors.Error._;
|
|
152
186
|
throw new ResponseError(message, code);
|
|
153
187
|
}
|
|
154
188
|
response.data = result.ApiResponse.CommandResponse;
|
|
@@ -182,31 +216,35 @@ var Namecheap = class {
|
|
|
182
216
|
}
|
|
183
217
|
call(command, payload) {
|
|
184
218
|
return __async(this, null, function* () {
|
|
185
|
-
const
|
|
219
|
+
const _a = this.config, { username } = _a, config = __objRest(_a, ["username"]);
|
|
220
|
+
const params = __spreadProps(__spreadValues(__spreadValues({
|
|
221
|
+
username
|
|
222
|
+
}, payload), config), {
|
|
186
223
|
command
|
|
187
224
|
});
|
|
188
225
|
const url = "?" + new URLSearchParams(params).toString();
|
|
189
|
-
const { data, status } = yield this.apiClient.
|
|
226
|
+
const { data, status } = yield this.apiClient.post(url);
|
|
190
227
|
return { data, status };
|
|
191
228
|
});
|
|
192
229
|
}
|
|
193
230
|
checkDomain(domainName) {
|
|
194
231
|
return __async(this, null, function* () {
|
|
195
|
-
const { data } = yield this.call("namecheap.domains.check" /* DOMAINS_CHECK */, {
|
|
232
|
+
const { data, status } = yield this.call("namecheap.domains.check" /* DOMAINS_CHECK */, {
|
|
196
233
|
DomainList: domainName
|
|
197
234
|
});
|
|
198
|
-
const isAvailabe = data[0].DomainCheckResult[0].$.Available;
|
|
199
|
-
const isPremium = data[0].DomainCheckResult[0].$.IsPremiumName;
|
|
200
235
|
const response = {
|
|
201
|
-
|
|
202
|
-
|
|
236
|
+
data: {
|
|
237
|
+
availabe: data.DomainCheckResult.$.Available,
|
|
238
|
+
premium: data.DomainCheckResult.$.IsPremiumName
|
|
239
|
+
},
|
|
240
|
+
status
|
|
203
241
|
};
|
|
204
242
|
return response;
|
|
205
243
|
});
|
|
206
244
|
}
|
|
207
245
|
getDomainPrice(domainName, action) {
|
|
208
246
|
return __async(this, null, function* () {
|
|
209
|
-
var _a, _b, _c, _d
|
|
247
|
+
var _a, _b, _c, _d;
|
|
210
248
|
const [_, tld] = domainName.split(".");
|
|
211
249
|
if (!tld) {
|
|
212
250
|
throw new InvalidDomainNameException(domainName);
|
|
@@ -217,12 +255,66 @@ var Namecheap = class {
|
|
|
217
255
|
ActionName: action,
|
|
218
256
|
ProductName: tld
|
|
219
257
|
});
|
|
220
|
-
const pricing = (
|
|
221
|
-
(price) => __spreadValues({}, price.$)
|
|
222
|
-
);
|
|
258
|
+
const pricing = (((_d = (_c = (_b = (_a = data.UserGetPricingResult) == null ? void 0 : _a.ProductType) == null ? void 0 : _b.ProductCategory) == null ? void 0 : _c.Product) == null ? void 0 : _d.Price) || []).map((price) => __spreadValues({}, price.$));
|
|
223
259
|
return { data: pricing, status };
|
|
224
260
|
});
|
|
225
261
|
}
|
|
262
|
+
registerDomain(payload) {
|
|
263
|
+
return __async(this, null, function* () {
|
|
264
|
+
var _a;
|
|
265
|
+
const { data, status } = yield this.call("namecheap.domains.create" /* DOMAINS_CREATE */, payload);
|
|
266
|
+
const result = (_a = data == null ? void 0 : data.DomainCreateResult) == null ? void 0 : _a.$;
|
|
267
|
+
const response = {
|
|
268
|
+
data: {
|
|
269
|
+
domain: result.Domain,
|
|
270
|
+
registered: result.Registered,
|
|
271
|
+
chargedAmount: result.ChargedAmount,
|
|
272
|
+
domainID: result.DomainID,
|
|
273
|
+
orderID: result.OrderID,
|
|
274
|
+
transactionID: result.TransactionID,
|
|
275
|
+
whoisguardEnable: result.WhoisguardEnable,
|
|
276
|
+
freePositiveSSL: result.FreePositiveSSL,
|
|
277
|
+
nonRealTimeDomain: result.NonRealTimeDomain
|
|
278
|
+
},
|
|
279
|
+
status
|
|
280
|
+
};
|
|
281
|
+
return response;
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
addFundsRequest(payload) {
|
|
285
|
+
return __async(this, null, function* () {
|
|
286
|
+
const { data, status } = yield this.call(
|
|
287
|
+
"namecheap.users.createaddfundsrequest" /* USERS_CREATEADDFUNDSREQUEST */,
|
|
288
|
+
payload
|
|
289
|
+
);
|
|
290
|
+
const result = data.Createaddfundsrequestresult.$;
|
|
291
|
+
const response = {
|
|
292
|
+
data: {
|
|
293
|
+
tokenId: result.TokenID,
|
|
294
|
+
returnURL: result.ReturnURL,
|
|
295
|
+
redirectURL: result.RedirectURL
|
|
296
|
+
},
|
|
297
|
+
status
|
|
298
|
+
};
|
|
299
|
+
return response;
|
|
300
|
+
});
|
|
301
|
+
}
|
|
302
|
+
getFundsStatus(tokenId) {
|
|
303
|
+
return __async(this, null, function* () {
|
|
304
|
+
const { data, status } = yield this.call("namecheap.users.getAddFundsStatus" /* USERS_GETADDFUNDSSTATUS */, {
|
|
305
|
+
tokenId
|
|
306
|
+
});
|
|
307
|
+
const result = data.GetAddFundsStatusResult.$;
|
|
308
|
+
const response = {
|
|
309
|
+
data: {
|
|
310
|
+
amount: result.Amount,
|
|
311
|
+
status: result.Status
|
|
312
|
+
},
|
|
313
|
+
status
|
|
314
|
+
};
|
|
315
|
+
return response;
|
|
316
|
+
});
|
|
317
|
+
}
|
|
226
318
|
};
|
|
227
319
|
var namecheap_default = Namecheap;
|
|
228
320
|
export {
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/commands.ts","../src/types.ts","../src/api/api-client.ts","../src/api/errors.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 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","import axios, { AxiosInstance, AxiosResponse } from \"axios\";\r\nimport { parseStringPromise } from \"xml2js\";\r\nimport { ResponseError, XMLParsingError } from \"./errors\";\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 private async onResponse(response: AxiosResponse): Promise<AxiosResponse> {\r\n try {\r\n const result = await parseStringPromise(response.data);\r\n\r\n if (result.ApiResponse.$.Status === \"ERROR\") {\r\n const responseErrors = result.ApiResponse.Errors;\r\n const code = responseErrors[0].Error[0].$.Number;\r\n const message = responseErrors[0].Error[0]._;\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","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 { DomainPriceAction } 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\nexport interface IReponse {\r\n data: any;\r\n status: number;\r\n}\r\n\r\nexport interface ICheckDomainResponse {\r\n availabe: boolean;\r\n premium: boolean;\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(\r\n command: Command,\r\n payload: Record<string, string>\r\n ): Promise<IReponse> {\r\n const params = {\r\n ...payload,\r\n ...this.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.get(url);\r\n\r\n return { data, status };\r\n }\r\n\r\n async checkDomain(domainName: string): Promise<ICheckDomainResponse> {\r\n const { data } = await this.call(Commands.DOMAINS_CHECK, {\r\n DomainList: domainName,\r\n });\r\n\r\n const isAvailabe: string = data[0].DomainCheckResult[0].$.Available;\r\n const isPremium: string = data[0].DomainCheckResult[0].$.IsPremiumName;\r\n\r\n const response: ICheckDomainResponse = {\r\n availabe: isAvailabe === \"true\",\r\n premium: isPremium === \"true\",\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> {\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 =\r\n data[0].UserGetPricingResult[0]?.ProductType?.[0]?.ProductCategory?.[0]?.Product?.[0]?.Price?.map(\r\n (price: any) => ({ ...price.$ })\r\n );\r\n\r\n return { data: pricing, status };\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.
|
|
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",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
],
|
|
11
11
|
"scripts": {
|
|
12
12
|
"start": "tsc --build && node dist/index.js",
|
|
13
|
-
"build": "tsup",
|
|
13
|
+
"build": "rm -rf dist && tsup",
|
|
14
14
|
"release": "rm -rf dist && tsup && npm publish",
|
|
15
15
|
"test": "jest"
|
|
16
16
|
},
|