rdapify 0.1.6 → 0.1.8
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/CHANGELOG.md +151 -93
- package/README.md +168 -146
- package/dist/application/client/RDAPClient.d.ts +4 -1
- package/dist/application/client/RDAPClient.d.ts.map +1 -1
- package/dist/application/client/RDAPClient.js +22 -0
- package/dist/application/client/RDAPClient.js.map +1 -1
- package/dist/application/hooks/MiddlewareHooks.d.ts +1 -1
- package/dist/application/hooks/MiddlewareHooks.d.ts.map +1 -1
- package/dist/application/services/BatchProcessor.d.ts +1 -0
- package/dist/application/services/BatchProcessor.d.ts.map +1 -1
- package/dist/application/services/BatchProcessor.js +9 -0
- package/dist/application/services/BatchProcessor.js.map +1 -1
- package/dist/application/services/QueryOrchestrator.d.ts +3 -1
- package/dist/application/services/QueryOrchestrator.d.ts.map +1 -1
- package/dist/application/services/QueryOrchestrator.js +192 -0
- package/dist/application/services/QueryOrchestrator.js.map +1 -1
- package/dist/cli/index.js +78 -5
- package/dist/cli/index.js.map +1 -1
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/infrastructure/http/BootstrapDiscovery.d.ts +1 -0
- package/dist/infrastructure/http/BootstrapDiscovery.d.ts.map +1 -1
- package/dist/infrastructure/http/BootstrapDiscovery.js +19 -0
- package/dist/infrastructure/http/BootstrapDiscovery.js.map +1 -1
- package/dist/infrastructure/http/Fetcher.js +1 -1
- package/dist/infrastructure/http/Normalizer.d.ts +2 -0
- package/dist/infrastructure/http/Normalizer.d.ts.map +1 -1
- package/dist/infrastructure/http/Normalizer.js +57 -0
- package/dist/infrastructure/http/Normalizer.js.map +1 -1
- package/dist/infrastructure/logging/AuditLogger.d.ts +7 -7
- package/dist/infrastructure/logging/AuditLogger.d.ts.map +1 -1
- package/dist/infrastructure/logging/AuditLogger.js.map +1 -1
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts +3 -3
- package/dist/infrastructure/monitoring/MetricsCollector.d.ts.map +1 -1
- package/dist/infrastructure/monitoring/MetricsCollector.js.map +1 -1
- package/dist/infrastructure/native/NativeBackend.d.ts +13 -0
- package/dist/infrastructure/native/NativeBackend.d.ts.map +1 -0
- package/dist/infrastructure/native/NativeBackend.js +92 -0
- package/dist/infrastructure/native/NativeBackend.js.map +1 -0
- package/dist/shared/constants/rdap.constants.d.ts +1 -1
- package/dist/shared/constants/rdap.constants.js +1 -1
- package/dist/shared/types/generics.d.ts +6 -3
- package/dist/shared/types/generics.d.ts.map +1 -1
- package/dist/shared/types/index.d.ts +1 -1
- package/dist/shared/types/index.d.ts.map +1 -1
- package/dist/shared/types/options.d.ts +1 -0
- package/dist/shared/types/options.d.ts.map +1 -1
- package/dist/shared/types/options.js +2 -1
- package/dist/shared/types/options.js.map +1 -1
- package/dist/shared/types/responses.d.ts +42 -2
- package/dist/shared/types/responses.d.ts.map +1 -1
- package/dist/shared/utils/validators/entity.d.ts +3 -0
- package/dist/shared/utils/validators/entity.d.ts.map +1 -0
- package/dist/shared/utils/validators/entity.js +27 -0
- package/dist/shared/utils/validators/entity.js.map +1 -0
- package/dist/shared/utils/validators/index.d.ts +2 -0
- package/dist/shared/utils/validators/index.d.ts.map +1 -1
- package/dist/shared/utils/validators/index.js +7 -1
- package/dist/shared/utils/validators/index.js.map +1 -1
- package/dist/shared/utils/validators/nameserver.d.ts +3 -0
- package/dist/shared/utils/validators/nameserver.d.ts.map +1 -0
- package/dist/shared/utils/validators/nameserver.js +49 -0
- package/dist/shared/utils/validators/nameserver.js.map +1 -0
- package/package.json +14 -10
|
@@ -43,7 +43,7 @@ exports.DEFAULT_OPTIONS = {
|
|
|
43
43
|
debug: {
|
|
44
44
|
enabled: false,
|
|
45
45
|
},
|
|
46
|
-
userAgent: 'RDAPify/0.1.
|
|
46
|
+
userAgent: 'RDAPify/0.1.8 (https://rdapify.com)',
|
|
47
47
|
includeRaw: false,
|
|
48
48
|
followRedirects: true,
|
|
49
49
|
maxRedirects: 5,
|
|
@@ -51,5 +51,6 @@ exports.DEFAULT_OPTIONS = {
|
|
|
51
51
|
bootstrapUrl: 'https://data.iana.org/rdap',
|
|
52
52
|
middleware: {},
|
|
53
53
|
deduplication: false,
|
|
54
|
+
backend: 'auto',
|
|
54
55
|
};
|
|
55
56
|
//# sourceMappingURL=options.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/shared/types/options.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/shared/types/options.ts"],"names":[],"mappings":";;;AA8Oa,QAAA,eAAe,GAAgC;IAC1D,KAAK,EAAE;QACL,QAAQ,EAAE,QAAQ;QAClB,GAAG,EAAE,IAAI;QACT,OAAO,EAAE,IAAI;KACd;IACD,KAAK,EAAE;QACL,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,KAAK;QACf,OAAO,EAAE,aAAa;QACtB,oBAAoB,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC;KACrD;IACD,cAAc,EAAE;QACd,OAAO,EAAE,IAAI;QACb,eAAe,EAAE,IAAI;QACrB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;KACnB;IACD,OAAO,EAAE;QACP,SAAS,EAAE,IAAI;QACf,YAAY,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC;QACvC,aAAa,EAAE,YAAY;KAC5B;IACD,OAAO,EAAE;QACP,OAAO,EAAE,IAAI;QACb,OAAO,EAAE,KAAK;QACd,GAAG,EAAE,IAAI;KACV;IACD,OAAO,EAAE;QACP,KAAK,EAAE,MAAM;KACd;IACD,SAAS,EAAE;QACT,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,GAAG;QAChB,QAAQ,EAAE,KAAK;KAChB;IACD,KAAK,EAAE;QACL,OAAO,EAAE,KAAK;KACf;IACD,SAAS,EAAE,qCAAqC;IAChD,UAAU,EAAE,KAAK;IACjB,eAAe,EAAE,IAAI;IACrB,YAAY,EAAE,CAAC;IACf,OAAO,EAAE,EAAE;IACX,YAAY,EAAE,4BAA4B;IAC1C,UAAU,EAAE,EAAE;IACd,aAAa,EAAE,KAAK;IACpB,OAAO,EAAE,MAAM;CAChB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RDAPStatus } from './enums';
|
|
1
|
+
import type { RDAPStatus, RoleType } from './enums';
|
|
2
2
|
import type { RDAPEntity, RDAPEvent, RDAPLink, RDAPRemark } from './entities';
|
|
3
3
|
export interface DomainResponse {
|
|
4
4
|
query: string;
|
|
@@ -67,7 +67,47 @@ export interface ASNResponse {
|
|
|
67
67
|
cached: boolean;
|
|
68
68
|
};
|
|
69
69
|
}
|
|
70
|
-
export
|
|
70
|
+
export interface NameserverResponse {
|
|
71
|
+
query: string;
|
|
72
|
+
objectClass: 'nameserver';
|
|
73
|
+
handle?: string;
|
|
74
|
+
ldhName?: string;
|
|
75
|
+
unicodeName?: string;
|
|
76
|
+
status?: RDAPStatus[];
|
|
77
|
+
ipAddresses?: {
|
|
78
|
+
v4?: string[];
|
|
79
|
+
v6?: string[];
|
|
80
|
+
};
|
|
81
|
+
entities?: RDAPEntity[];
|
|
82
|
+
events?: RDAPEvent[];
|
|
83
|
+
links?: RDAPLink[];
|
|
84
|
+
remarks?: RDAPRemark[];
|
|
85
|
+
raw?: any;
|
|
86
|
+
metadata: {
|
|
87
|
+
source: string;
|
|
88
|
+
timestamp: string;
|
|
89
|
+
cached: boolean;
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
export interface EntityResponse {
|
|
93
|
+
query: string;
|
|
94
|
+
objectClass: 'entity';
|
|
95
|
+
handle?: string;
|
|
96
|
+
vcardArray?: any[];
|
|
97
|
+
roles?: RoleType[];
|
|
98
|
+
status?: RDAPStatus[];
|
|
99
|
+
entities?: RDAPEntity[];
|
|
100
|
+
events?: RDAPEvent[];
|
|
101
|
+
links?: RDAPLink[];
|
|
102
|
+
remarks?: RDAPRemark[];
|
|
103
|
+
raw?: any;
|
|
104
|
+
metadata: {
|
|
105
|
+
source: string;
|
|
106
|
+
timestamp: string;
|
|
107
|
+
cached: boolean;
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
export type RDAPResponse = DomainResponse | IPResponse | ASNResponse | NameserverResponse | EntityResponse;
|
|
71
111
|
export interface RawRDAPResponse {
|
|
72
112
|
objectClassName: string;
|
|
73
113
|
handle?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/shared/types/responses.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../src/shared/types/responses.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/validators/entity.ts"],"names":[],"mappings":"AAcA,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAyBzD;AAQD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAE5D"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateEntityHandle = validateEntityHandle;
|
|
4
|
+
exports.normalizeEntityHandle = normalizeEntityHandle;
|
|
5
|
+
const errors_1 = require("../../types/errors");
|
|
6
|
+
function validateEntityHandle(handle) {
|
|
7
|
+
if (!handle || typeof handle !== 'string') {
|
|
8
|
+
throw new errors_1.ValidationError('Entity handle must be a non-empty string', { handle });
|
|
9
|
+
}
|
|
10
|
+
const trimmed = handle.trim();
|
|
11
|
+
if (trimmed.length === 0) {
|
|
12
|
+
throw new errors_1.ValidationError('Entity handle cannot be empty', { handle });
|
|
13
|
+
}
|
|
14
|
+
if (trimmed.length > 255) {
|
|
15
|
+
throw new errors_1.ValidationError('Entity handle exceeds maximum length of 255 characters', {
|
|
16
|
+
handle,
|
|
17
|
+
length: trimmed.length,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (!/^[a-zA-Z0-9][\w\-.]*$/.test(trimmed)) {
|
|
21
|
+
throw new errors_1.ValidationError('Entity handle contains invalid characters. Must start with alphanumeric and contain only letters, digits, hyphens, underscores, or dots.', { handle });
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function normalizeEntityHandle(handle) {
|
|
25
|
+
return handle.trim();
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../../src/shared/utils/validators/entity.ts"],"names":[],"mappings":";;AAcA,oDAyBC;AAQD,sDAEC;AA5CD,+CAAqD;AASrD,SAAgB,oBAAoB,CAAC,MAAc;IACjD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,MAAM,IAAI,wBAAe,CAAC,0CAA0C,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE9B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAe,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAe,CAAC,wDAAwD,EAAE;YAClF,MAAM;YACN,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,wBAAe,CACvB,0IAA0I,EAC1I,EAAE,MAAM,EAAE,CACX,CAAC;IACJ,CAAC;AACH,CAAC;AAQD,SAAgB,qBAAqB,CAAC,MAAc;IAClD,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { validateDomain, normalizeDomain } from './domain';
|
|
2
2
|
export { validateIP, validateIPv4, validateIPv6, normalizeIP } from './ip';
|
|
3
3
|
export { validateASN, normalizeASN } from './asn';
|
|
4
|
+
export { validateNameserver, normalizeNameserver } from './nameserver';
|
|
5
|
+
export { validateEntityHandle, normalizeEntityHandle } from './entity';
|
|
4
6
|
export { isPrivateIP, isLocalhost, isLinkLocal } from './network';
|
|
5
7
|
export { validateClientOptions } from './config-validation';
|
|
6
8
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/validators/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/validators/index.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAClD,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.validateClientOptions = exports.isLinkLocal = exports.isLocalhost = exports.isPrivateIP = exports.normalizeASN = exports.validateASN = exports.normalizeIP = exports.validateIPv6 = exports.validateIPv4 = exports.validateIP = exports.normalizeDomain = exports.validateDomain = void 0;
|
|
3
|
+
exports.validateClientOptions = exports.isLinkLocal = exports.isLocalhost = exports.isPrivateIP = exports.normalizeEntityHandle = exports.validateEntityHandle = exports.normalizeNameserver = exports.validateNameserver = exports.normalizeASN = exports.validateASN = exports.normalizeIP = exports.validateIPv6 = exports.validateIPv4 = exports.validateIP = exports.normalizeDomain = exports.validateDomain = void 0;
|
|
4
4
|
var domain_1 = require("./domain");
|
|
5
5
|
Object.defineProperty(exports, "validateDomain", { enumerable: true, get: function () { return domain_1.validateDomain; } });
|
|
6
6
|
Object.defineProperty(exports, "normalizeDomain", { enumerable: true, get: function () { return domain_1.normalizeDomain; } });
|
|
@@ -12,6 +12,12 @@ Object.defineProperty(exports, "normalizeIP", { enumerable: true, get: function
|
|
|
12
12
|
var asn_1 = require("./asn");
|
|
13
13
|
Object.defineProperty(exports, "validateASN", { enumerable: true, get: function () { return asn_1.validateASN; } });
|
|
14
14
|
Object.defineProperty(exports, "normalizeASN", { enumerable: true, get: function () { return asn_1.normalizeASN; } });
|
|
15
|
+
var nameserver_1 = require("./nameserver");
|
|
16
|
+
Object.defineProperty(exports, "validateNameserver", { enumerable: true, get: function () { return nameserver_1.validateNameserver; } });
|
|
17
|
+
Object.defineProperty(exports, "normalizeNameserver", { enumerable: true, get: function () { return nameserver_1.normalizeNameserver; } });
|
|
18
|
+
var entity_1 = require("./entity");
|
|
19
|
+
Object.defineProperty(exports, "validateEntityHandle", { enumerable: true, get: function () { return entity_1.validateEntityHandle; } });
|
|
20
|
+
Object.defineProperty(exports, "normalizeEntityHandle", { enumerable: true, get: function () { return entity_1.normalizeEntityHandle; } });
|
|
15
21
|
var network_1 = require("./network");
|
|
16
22
|
Object.defineProperty(exports, "isPrivateIP", { enumerable: true, get: function () { return network_1.isPrivateIP; } });
|
|
17
23
|
Object.defineProperty(exports, "isLocalhost", { enumerable: true, get: function () { return network_1.isLocalhost; } });
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/utils/validators/index.ts"],"names":[],"mappings":";;;AAKA,mCAA2D;AAAlD,wGAAA,cAAc,OAAA;AAAE,yGAAA,eAAe,OAAA;AACxC,2BAA2E;AAAlE,gGAAA,UAAU,OAAA;AAAE,kGAAA,YAAY,OAAA;AAAE,kGAAA,YAAY,OAAA;AAAE,iGAAA,WAAW,OAAA;AAC5D,6BAAkD;AAAzC,kGAAA,WAAW,OAAA;AAAE,mGAAA,YAAY,OAAA;AAClC,qCAAkE;AAAzD,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAG9C,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/shared/utils/validators/index.ts"],"names":[],"mappings":";;;AAKA,mCAA2D;AAAlD,wGAAA,cAAc,OAAA;AAAE,yGAAA,eAAe,OAAA;AACxC,2BAA2E;AAAlE,gGAAA,UAAU,OAAA;AAAE,kGAAA,YAAY,OAAA;AAAE,kGAAA,YAAY,OAAA;AAAE,iGAAA,WAAW,OAAA;AAC5D,6BAAkD;AAAzC,kGAAA,WAAW,OAAA;AAAE,mGAAA,YAAY,OAAA;AAClC,2CAAuE;AAA9D,gHAAA,kBAAkB,OAAA;AAAE,iHAAA,mBAAmB,OAAA;AAChD,mCAAuE;AAA9D,8GAAA,oBAAoB,OAAA;AAAE,+GAAA,qBAAqB,OAAA;AACpD,qCAAkE;AAAzD,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAAE,sGAAA,WAAW,OAAA;AAG9C,yDAA4D;AAAnD,0HAAA,qBAAqB,OAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nameserver.d.ts","sourceRoot":"","sources":["../../../../src/shared/utils/validators/nameserver.ts"],"names":[],"mappings":"AAcA,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAmD3D;AAQD,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAE9D"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateNameserver = validateNameserver;
|
|
4
|
+
exports.normalizeNameserver = normalizeNameserver;
|
|
5
|
+
const errors_1 = require("../../types/errors");
|
|
6
|
+
function validateNameserver(nameserver) {
|
|
7
|
+
if (!nameserver || typeof nameserver !== 'string') {
|
|
8
|
+
throw new errors_1.ValidationError('Nameserver must be a non-empty string', { nameserver });
|
|
9
|
+
}
|
|
10
|
+
const trimmed = nameserver.trim();
|
|
11
|
+
if (trimmed.length === 0) {
|
|
12
|
+
throw new errors_1.ValidationError('Nameserver cannot be empty', { nameserver });
|
|
13
|
+
}
|
|
14
|
+
if (trimmed.length > 253) {
|
|
15
|
+
throw new errors_1.ValidationError('Nameserver hostname exceeds maximum length of 253 characters', {
|
|
16
|
+
nameserver,
|
|
17
|
+
length: trimmed.length,
|
|
18
|
+
});
|
|
19
|
+
}
|
|
20
|
+
if (!trimmed.includes('.')) {
|
|
21
|
+
throw new errors_1.ValidationError('Nameserver must be a fully-qualified hostname (e.g., ns1.example.com)', { nameserver });
|
|
22
|
+
}
|
|
23
|
+
const labels = trimmed.split('.');
|
|
24
|
+
for (const label of labels) {
|
|
25
|
+
if (label.length === 0) {
|
|
26
|
+
throw new errors_1.ValidationError('Nameserver hostname contains empty label (double dot or leading/trailing dot)', {
|
|
27
|
+
nameserver,
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
if (label.length > 63) {
|
|
31
|
+
throw new errors_1.ValidationError(`Nameserver label "${label}" exceeds maximum length of 63 characters`, {
|
|
32
|
+
nameserver,
|
|
33
|
+
label,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
if (!/^[a-zA-Z0-9]([a-zA-Z0-9-]*[a-zA-Z0-9])?$/.test(label) && !/^[a-zA-Z0-9]$/.test(label)) {
|
|
37
|
+
if (!/^[a-zA-Z0-9][a-zA-Z0-9-]*$/.test(label)) {
|
|
38
|
+
throw new errors_1.ValidationError(`Nameserver label "${label}" contains invalid characters`, {
|
|
39
|
+
nameserver,
|
|
40
|
+
label,
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function normalizeNameserver(nameserver) {
|
|
47
|
+
return nameserver.trim().toLowerCase();
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=nameserver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"nameserver.js","sourceRoot":"","sources":["../../../../src/shared/utils/validators/nameserver.ts"],"names":[],"mappings":";;AAcA,gDAmDC;AAQD,kDAEC;AAtED,+CAAqD;AASrD,SAAgB,kBAAkB,CAAC,UAAkB;IACnD,IAAI,CAAC,UAAU,IAAI,OAAO,UAAU,KAAK,QAAQ,EAAE,CAAC;QAClD,MAAM,IAAI,wBAAe,CAAC,uCAAuC,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IACrF,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;IAElC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAe,CAAC,4BAA4B,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACzB,MAAM,IAAI,wBAAe,CAAC,8DAA8D,EAAE;YACxF,UAAU;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;SACvB,CAAC,CAAC;IACL,CAAC;IAGD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,wBAAe,CACvB,uEAAuE,EACvE,EAAE,UAAU,EAAE,CACf,CAAC;IACJ,CAAC;IAGD,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,wBAAe,CAAC,+EAA+E,EAAE;gBACzG,UAAU;aACX,CAAC,CAAC;QACL,CAAC;QACD,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE,CAAC;YACtB,MAAM,IAAI,wBAAe,CAAC,qBAAqB,KAAK,2CAA2C,EAAE;gBAC/F,UAAU;gBACV,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,0CAA0C,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YAE5F,IAAI,CAAC,4BAA4B,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC9C,MAAM,IAAI,wBAAe,CAAC,qBAAqB,KAAK,+BAA+B,EAAE;oBACnF,UAAU;oBACV,KAAK;iBACN,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC;AAQD,SAAgB,mBAAmB,CAAC,UAAkB;IACpD,OAAO,UAAU,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AACzC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rdapify",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "Unified, secure, high-performance RDAP client
|
|
3
|
+
"version": "0.1.8",
|
|
4
|
+
"description": "Unified, secure, high-performance RDAP client with built-in SSRF protection and privacy controls",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
7
7
|
"exports": {
|
|
@@ -104,27 +104,31 @@
|
|
|
104
104
|
},
|
|
105
105
|
"devDependencies": {
|
|
106
106
|
"@types/jest": "^29.5.11",
|
|
107
|
-
"@types/node": "^
|
|
107
|
+
"@types/node": "^25.5.0",
|
|
108
108
|
"@typescript-eslint/eslint-plugin": "^8.53.1",
|
|
109
109
|
"@typescript-eslint/parser": "^8.53.1",
|
|
110
110
|
"eslint": "^8.56.0",
|
|
111
|
-
"eslint-config-prettier": "^
|
|
111
|
+
"eslint-config-prettier": "^10.1.8",
|
|
112
112
|
"eslint-plugin-import": "^2.32.0",
|
|
113
113
|
"eslint-plugin-prettier": "^5.1.3",
|
|
114
114
|
"eslint-plugin-security": "^3.0.1",
|
|
115
|
-
"husky": "^
|
|
115
|
+
"husky": "^9.1.7",
|
|
116
116
|
"jest": "^29.7.0",
|
|
117
117
|
"prettier": "^3.2.4",
|
|
118
|
-
"rimraf": "^
|
|
118
|
+
"rimraf": "^6.1.3",
|
|
119
119
|
"ts-jest": "^29.1.1",
|
|
120
120
|
"typescript": "^5.9.3"
|
|
121
121
|
},
|
|
122
|
-
"funding": {
|
|
123
|
-
"type": "opencollective",
|
|
124
|
-
"url": "https://opencollective.com/rdapify"
|
|
125
|
-
},
|
|
126
122
|
"dependencies": {
|
|
127
123
|
"ipaddr.js": "^2.3.0",
|
|
128
124
|
"tslib": "^2.8.1"
|
|
125
|
+
},
|
|
126
|
+
"peerDependencies": {
|
|
127
|
+
"@rdapify/core": ">=0.1.0"
|
|
128
|
+
},
|
|
129
|
+
"peerDependenciesMeta": {
|
|
130
|
+
"@rdapify/core": {
|
|
131
|
+
"optional": true
|
|
132
|
+
}
|
|
129
133
|
}
|
|
130
134
|
}
|