@gjsify/dns 0.1.0
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 +29 -0
- package/lib/esm/index.js +263 -0
- package/lib/esm/promises.js +61 -0
- package/lib/types/index.d.ts +90 -0
- package/lib/types/promises.d.ts +14 -0
- package/package.json +48 -0
- package/src/index.spec.ts +396 -0
- package/src/index.ts +314 -0
- package/src/promises.spec.ts +125 -0
- package/src/promises.ts +63 -0
- package/src/test.mts +7 -0
- package/tsconfig.json +31 -0
- package/tsconfig.tsbuildinfo +1 -0
package/README.md
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
# @gjsify/dns
|
|
2
|
+
|
|
3
|
+
GJS implementation of the Node.js `dns` module using Gio.Resolver. Supports lookup, resolve4/6, reverse, and promises API.
|
|
4
|
+
|
|
5
|
+
Part of the [gjsify](https://github.com/gjsify/gjsify) project — Node.js and Web APIs for GJS (GNOME JavaScript).
|
|
6
|
+
|
|
7
|
+
## Installation
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install @gjsify/dns
|
|
11
|
+
# or
|
|
12
|
+
yarn add @gjsify/dns
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Usage
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
import { lookup, promises } from '@gjsify/dns';
|
|
19
|
+
|
|
20
|
+
lookup('example.com', (err, address, family) => {
|
|
21
|
+
console.log(`Address: ${address}, Family: ${family}`);
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
const result = await promises.resolve4('example.com');
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
## License
|
|
28
|
+
|
|
29
|
+
MIT
|
package/lib/esm/index.js
ADDED
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
import Gio from "@girs/gio-2.0";
|
|
2
|
+
import { isIP } from "node:net";
|
|
3
|
+
const NODATA = "ENODATA";
|
|
4
|
+
const FORMERR = "EFORMERR";
|
|
5
|
+
const SERVFAIL = "ESERVFAIL";
|
|
6
|
+
const NOTFOUND = "ENOTFOUND";
|
|
7
|
+
const NOTIMP = "ENOTIMP";
|
|
8
|
+
const REFUSED = "EREFUSED";
|
|
9
|
+
const BADQUERY = "EBADQUERY";
|
|
10
|
+
const BADNAME = "EBADNAME";
|
|
11
|
+
const BADFAMILY = "EBADFAMILY";
|
|
12
|
+
const BADRESP = "EBADRESP";
|
|
13
|
+
const CONNREFUSED = "ECONNREFUSED";
|
|
14
|
+
const TIMEOUT = "ETIMEOUT";
|
|
15
|
+
const EOF = "EOF";
|
|
16
|
+
const FILE = "EFILE";
|
|
17
|
+
const NOMEM = "ENOMEM";
|
|
18
|
+
const DESTRUCTION = "EDESTRUCTION";
|
|
19
|
+
const BADSTR = "EBADSTR";
|
|
20
|
+
const BADFLAGS = "EBADFLAGS";
|
|
21
|
+
const NONAME = "ENONAME";
|
|
22
|
+
const BADHINTS = "EBADHINTS";
|
|
23
|
+
const NOTINITIALIZED = "ENOTINITIALIZED";
|
|
24
|
+
const LOADIPHLPAPI = "ELOADIPHLPAPI";
|
|
25
|
+
const ADDRGETNETWORKPARAMS = "EADDRGETNETWORKPARAMS";
|
|
26
|
+
const CANCELLED = "ECANCELLED";
|
|
27
|
+
function createDnsError(hostname, syscall, _err) {
|
|
28
|
+
const code = NOTFOUND;
|
|
29
|
+
const message = `${syscall} ${code} ${hostname}`;
|
|
30
|
+
const error = new Error(message);
|
|
31
|
+
error.code = code;
|
|
32
|
+
error.syscall = syscall;
|
|
33
|
+
error.hostname = hostname;
|
|
34
|
+
error.errno = void 0;
|
|
35
|
+
return error;
|
|
36
|
+
}
|
|
37
|
+
function lookup(hostname, ...args) {
|
|
38
|
+
let options = {};
|
|
39
|
+
let callback;
|
|
40
|
+
if (typeof args[0] === "function") {
|
|
41
|
+
callback = args[0];
|
|
42
|
+
} else {
|
|
43
|
+
if (typeof args[0] === "number") {
|
|
44
|
+
options = { family: args[0] };
|
|
45
|
+
} else if (args[0]) {
|
|
46
|
+
options = args[0];
|
|
47
|
+
}
|
|
48
|
+
callback = args[1];
|
|
49
|
+
}
|
|
50
|
+
if (!hostname) {
|
|
51
|
+
const family = options.family || 4;
|
|
52
|
+
callback(null, null, family);
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const ipVersion = isIP(hostname);
|
|
56
|
+
if (ipVersion) {
|
|
57
|
+
callback(null, hostname, ipVersion);
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
const resolver = Gio.Resolver.get_default();
|
|
61
|
+
resolver.lookup_by_name_async(
|
|
62
|
+
hostname,
|
|
63
|
+
null,
|
|
64
|
+
// cancellable
|
|
65
|
+
(_source, asyncResult) => {
|
|
66
|
+
try {
|
|
67
|
+
const addresses = resolver.lookup_by_name_finish(asyncResult);
|
|
68
|
+
if (!addresses || addresses.length === 0) {
|
|
69
|
+
callback(createDnsError(hostname, "getaddrinfo"), "", 0);
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
const family = options.family || 0;
|
|
73
|
+
let results = [];
|
|
74
|
+
for (const addr of addresses) {
|
|
75
|
+
const addrFamily = addr.get_family();
|
|
76
|
+
if (family === 0 || family === 4 && addrFamily === Gio.SocketFamily.IPV4 || family === 6 && addrFamily === Gio.SocketFamily.IPV6) {
|
|
77
|
+
results.push(addr);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
if (results.length === 0) {
|
|
81
|
+
results = Array.from(addresses);
|
|
82
|
+
}
|
|
83
|
+
if (options.all) {
|
|
84
|
+
const allAddresses = results.map((addr) => ({
|
|
85
|
+
address: addr.to_string(),
|
|
86
|
+
family: addr.get_family() === Gio.SocketFamily.IPV6 ? 6 : 4
|
|
87
|
+
}));
|
|
88
|
+
callback(null, allAddresses);
|
|
89
|
+
} else {
|
|
90
|
+
const first = results[0];
|
|
91
|
+
const addrStr = first.to_string();
|
|
92
|
+
const addrFamily = first.get_family() === Gio.SocketFamily.IPV6 ? 6 : 4;
|
|
93
|
+
callback(null, addrStr, addrFamily);
|
|
94
|
+
}
|
|
95
|
+
} catch (_err) {
|
|
96
|
+
callback(createDnsError(hostname, "getaddrinfo"), "", 0);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
);
|
|
100
|
+
}
|
|
101
|
+
function resolve4(hostname, callback) {
|
|
102
|
+
lookup(hostname, { family: 4, all: true }, (err, addresses) => {
|
|
103
|
+
if (err) {
|
|
104
|
+
callback(err, []);
|
|
105
|
+
return;
|
|
106
|
+
}
|
|
107
|
+
callback(null, addresses.map((a) => a.address));
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
function resolve6(hostname, callback) {
|
|
111
|
+
lookup(hostname, { family: 6, all: true }, (err, addresses) => {
|
|
112
|
+
if (err) {
|
|
113
|
+
callback(err, []);
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
callback(null, addresses.map((a) => a.address));
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
function reverse(ip, callback) {
|
|
120
|
+
const resolver = Gio.Resolver.get_default();
|
|
121
|
+
const addr = Gio.InetAddress.new_from_string(ip);
|
|
122
|
+
if (!addr) {
|
|
123
|
+
const err = new Error(`Invalid IP address: ${ip}`);
|
|
124
|
+
err.code = "ERR_INVALID_ARG_VALUE";
|
|
125
|
+
callback(err, []);
|
|
126
|
+
return;
|
|
127
|
+
}
|
|
128
|
+
resolver.lookup_by_address_async(
|
|
129
|
+
addr,
|
|
130
|
+
null,
|
|
131
|
+
(_source, asyncResult) => {
|
|
132
|
+
try {
|
|
133
|
+
const hostname = resolver.lookup_by_address_finish(asyncResult);
|
|
134
|
+
callback(null, hostname ? [hostname] : []);
|
|
135
|
+
} catch (_err) {
|
|
136
|
+
callback(createDnsError(ip, "getnameinfo"), []);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
);
|
|
140
|
+
}
|
|
141
|
+
function resolve(hostname, ...args) {
|
|
142
|
+
let rrtype = "A";
|
|
143
|
+
let callback;
|
|
144
|
+
if (typeof args[0] === "function") {
|
|
145
|
+
callback = args[0];
|
|
146
|
+
} else {
|
|
147
|
+
rrtype = args[0];
|
|
148
|
+
callback = args[1];
|
|
149
|
+
}
|
|
150
|
+
switch (rrtype.toUpperCase()) {
|
|
151
|
+
case "A":
|
|
152
|
+
resolve4(hostname, callback);
|
|
153
|
+
break;
|
|
154
|
+
case "AAAA":
|
|
155
|
+
resolve6(hostname, callback);
|
|
156
|
+
break;
|
|
157
|
+
default:
|
|
158
|
+
_resolveRecords(hostname, rrtype, callback);
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
function _resolveRecords(hostname, rrtype, callback) {
|
|
162
|
+
const resolver = Gio.Resolver.get_default();
|
|
163
|
+
const recordTypeMap = {
|
|
164
|
+
SRV: Gio.ResolverRecordType.SRV,
|
|
165
|
+
MX: Gio.ResolverRecordType.MX,
|
|
166
|
+
TXT: Gio.ResolverRecordType.TXT,
|
|
167
|
+
SOA: Gio.ResolverRecordType.SOA,
|
|
168
|
+
NS: Gio.ResolverRecordType.NS
|
|
169
|
+
};
|
|
170
|
+
const gioType = recordTypeMap[rrtype.toUpperCase()];
|
|
171
|
+
if (!gioType) {
|
|
172
|
+
const err = new Error(`Unknown record type: ${rrtype}`);
|
|
173
|
+
err.code = "ERR_INVALID_ARG_VALUE";
|
|
174
|
+
callback(err, []);
|
|
175
|
+
return;
|
|
176
|
+
}
|
|
177
|
+
resolver.lookup_records_async(
|
|
178
|
+
hostname,
|
|
179
|
+
gioType,
|
|
180
|
+
null,
|
|
181
|
+
(_source, asyncResult) => {
|
|
182
|
+
try {
|
|
183
|
+
const records = resolver.lookup_records_finish(asyncResult);
|
|
184
|
+
const results = records.map((r) => r.deep_unpack());
|
|
185
|
+
callback(null, results);
|
|
186
|
+
} catch (_err) {
|
|
187
|
+
callback(createDnsError(hostname, "queryDns"), []);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
);
|
|
191
|
+
}
|
|
192
|
+
let _defaultResultOrder = "verbatim";
|
|
193
|
+
function setDefaultResultOrder(order) {
|
|
194
|
+
_defaultResultOrder = order;
|
|
195
|
+
}
|
|
196
|
+
function getDefaultResultOrder() {
|
|
197
|
+
return _defaultResultOrder;
|
|
198
|
+
}
|
|
199
|
+
var index_default = {
|
|
200
|
+
lookup,
|
|
201
|
+
resolve,
|
|
202
|
+
resolve4,
|
|
203
|
+
resolve6,
|
|
204
|
+
reverse,
|
|
205
|
+
setDefaultResultOrder,
|
|
206
|
+
getDefaultResultOrder,
|
|
207
|
+
NODATA,
|
|
208
|
+
FORMERR,
|
|
209
|
+
SERVFAIL,
|
|
210
|
+
NOTFOUND,
|
|
211
|
+
NOTIMP,
|
|
212
|
+
REFUSED,
|
|
213
|
+
BADQUERY,
|
|
214
|
+
BADNAME,
|
|
215
|
+
BADFAMILY,
|
|
216
|
+
BADRESP,
|
|
217
|
+
CONNREFUSED,
|
|
218
|
+
TIMEOUT,
|
|
219
|
+
EOF,
|
|
220
|
+
FILE,
|
|
221
|
+
NOMEM,
|
|
222
|
+
DESTRUCTION,
|
|
223
|
+
BADSTR,
|
|
224
|
+
BADFLAGS,
|
|
225
|
+
NONAME,
|
|
226
|
+
BADHINTS,
|
|
227
|
+
NOTINITIALIZED,
|
|
228
|
+
CANCELLED
|
|
229
|
+
};
|
|
230
|
+
export {
|
|
231
|
+
ADDRGETNETWORKPARAMS,
|
|
232
|
+
BADFAMILY,
|
|
233
|
+
BADFLAGS,
|
|
234
|
+
BADHINTS,
|
|
235
|
+
BADNAME,
|
|
236
|
+
BADQUERY,
|
|
237
|
+
BADRESP,
|
|
238
|
+
BADSTR,
|
|
239
|
+
CANCELLED,
|
|
240
|
+
CONNREFUSED,
|
|
241
|
+
DESTRUCTION,
|
|
242
|
+
EOF,
|
|
243
|
+
FILE,
|
|
244
|
+
FORMERR,
|
|
245
|
+
LOADIPHLPAPI,
|
|
246
|
+
NODATA,
|
|
247
|
+
NOMEM,
|
|
248
|
+
NONAME,
|
|
249
|
+
NOTFOUND,
|
|
250
|
+
NOTIMP,
|
|
251
|
+
NOTINITIALIZED,
|
|
252
|
+
REFUSED,
|
|
253
|
+
SERVFAIL,
|
|
254
|
+
TIMEOUT,
|
|
255
|
+
index_default as default,
|
|
256
|
+
getDefaultResultOrder,
|
|
257
|
+
lookup,
|
|
258
|
+
resolve,
|
|
259
|
+
resolve4,
|
|
260
|
+
resolve6,
|
|
261
|
+
reverse,
|
|
262
|
+
setDefaultResultOrder
|
|
263
|
+
};
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { lookup as _lookup, resolve4 as _resolve4, resolve6 as _resolve6, reverse as _reverse, resolve as _resolve } from "./index.js";
|
|
2
|
+
function lookup(hostname, options) {
|
|
3
|
+
return new Promise((resolve2, reject) => {
|
|
4
|
+
_lookup(hostname, options, (err, address, family) => {
|
|
5
|
+
if (err) return reject(err);
|
|
6
|
+
if (Array.isArray(address)) {
|
|
7
|
+
resolve2(address);
|
|
8
|
+
} else {
|
|
9
|
+
resolve2({ address, family });
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
function resolve4(hostname) {
|
|
15
|
+
return new Promise((resolve2, reject) => {
|
|
16
|
+
_resolve4(hostname, (err, addresses) => {
|
|
17
|
+
if (err) return reject(err);
|
|
18
|
+
resolve2(addresses);
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
function resolve6(hostname) {
|
|
23
|
+
return new Promise((resolve2, reject) => {
|
|
24
|
+
_resolve6(hostname, (err, addresses) => {
|
|
25
|
+
if (err) return reject(err);
|
|
26
|
+
resolve2(addresses);
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
function reverse(ip) {
|
|
31
|
+
return new Promise((resolve2, reject) => {
|
|
32
|
+
_reverse(ip, (err, hostnames) => {
|
|
33
|
+
if (err) return reject(err);
|
|
34
|
+
resolve2(hostnames);
|
|
35
|
+
});
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function resolve(hostname, rrtype) {
|
|
39
|
+
return new Promise((res, reject) => {
|
|
40
|
+
if (rrtype) {
|
|
41
|
+
_resolve(hostname, rrtype, (err, records) => {
|
|
42
|
+
if (err) return reject(err);
|
|
43
|
+
res(records);
|
|
44
|
+
});
|
|
45
|
+
} else {
|
|
46
|
+
_resolve(hostname, (err, records) => {
|
|
47
|
+
if (err) return reject(err);
|
|
48
|
+
res(records);
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
var promises_default = { lookup, resolve, resolve4, resolve6, reverse };
|
|
54
|
+
export {
|
|
55
|
+
promises_default as default,
|
|
56
|
+
lookup,
|
|
57
|
+
resolve,
|
|
58
|
+
resolve4,
|
|
59
|
+
resolve6,
|
|
60
|
+
reverse
|
|
61
|
+
};
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
export declare const NODATA = "ENODATA";
|
|
2
|
+
export declare const FORMERR = "EFORMERR";
|
|
3
|
+
export declare const SERVFAIL = "ESERVFAIL";
|
|
4
|
+
export declare const NOTFOUND = "ENOTFOUND";
|
|
5
|
+
export declare const NOTIMP = "ENOTIMP";
|
|
6
|
+
export declare const REFUSED = "EREFUSED";
|
|
7
|
+
export declare const BADQUERY = "EBADQUERY";
|
|
8
|
+
export declare const BADNAME = "EBADNAME";
|
|
9
|
+
export declare const BADFAMILY = "EBADFAMILY";
|
|
10
|
+
export declare const BADRESP = "EBADRESP";
|
|
11
|
+
export declare const CONNREFUSED = "ECONNREFUSED";
|
|
12
|
+
export declare const TIMEOUT = "ETIMEOUT";
|
|
13
|
+
export declare const EOF = "EOF";
|
|
14
|
+
export declare const FILE = "EFILE";
|
|
15
|
+
export declare const NOMEM = "ENOMEM";
|
|
16
|
+
export declare const DESTRUCTION = "EDESTRUCTION";
|
|
17
|
+
export declare const BADSTR = "EBADSTR";
|
|
18
|
+
export declare const BADFLAGS = "EBADFLAGS";
|
|
19
|
+
export declare const NONAME = "ENONAME";
|
|
20
|
+
export declare const BADHINTS = "EBADHINTS";
|
|
21
|
+
export declare const NOTINITIALIZED = "ENOTINITIALIZED";
|
|
22
|
+
export declare const LOADIPHLPAPI = "ELOADIPHLPAPI";
|
|
23
|
+
export declare const ADDRGETNETWORKPARAMS = "EADDRGETNETWORKPARAMS";
|
|
24
|
+
export declare const CANCELLED = "ECANCELLED";
|
|
25
|
+
export interface LookupOptions {
|
|
26
|
+
family?: 0 | 4 | 6;
|
|
27
|
+
hints?: number;
|
|
28
|
+
all?: boolean;
|
|
29
|
+
verbatim?: boolean;
|
|
30
|
+
}
|
|
31
|
+
export interface LookupAddress {
|
|
32
|
+
address: string;
|
|
33
|
+
family: 4 | 6;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Resolve a hostname to an IP address using the system DNS resolver.
|
|
37
|
+
*/
|
|
38
|
+
export declare function lookup(hostname: string, options: LookupOptions | number | null | undefined, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
|
|
39
|
+
export declare function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
|
|
40
|
+
/**
|
|
41
|
+
* Resolve a hostname to an array of IPv4 addresses.
|
|
42
|
+
*/
|
|
43
|
+
export declare function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
|
|
44
|
+
/**
|
|
45
|
+
* Resolve a hostname to an array of IPv6 addresses.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
|
|
48
|
+
/**
|
|
49
|
+
* Reverse DNS lookup.
|
|
50
|
+
*/
|
|
51
|
+
export declare function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void;
|
|
52
|
+
/**
|
|
53
|
+
* Resolve hostname using specified record type.
|
|
54
|
+
*/
|
|
55
|
+
export declare function resolve(hostname: string, rrtype: string, callback: (err: NodeJS.ErrnoException | null, records: unknown[]) => void): void;
|
|
56
|
+
export declare function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, records: string[]) => void): void;
|
|
57
|
+
export declare function setDefaultResultOrder(order: 'ipv4first' | 'verbatim'): void;
|
|
58
|
+
export declare function getDefaultResultOrder(): string;
|
|
59
|
+
declare const _default: {
|
|
60
|
+
lookup: typeof lookup;
|
|
61
|
+
resolve: typeof resolve;
|
|
62
|
+
resolve4: typeof resolve4;
|
|
63
|
+
resolve6: typeof resolve6;
|
|
64
|
+
reverse: typeof reverse;
|
|
65
|
+
setDefaultResultOrder: typeof setDefaultResultOrder;
|
|
66
|
+
getDefaultResultOrder: typeof getDefaultResultOrder;
|
|
67
|
+
NODATA: string;
|
|
68
|
+
FORMERR: string;
|
|
69
|
+
SERVFAIL: string;
|
|
70
|
+
NOTFOUND: string;
|
|
71
|
+
NOTIMP: string;
|
|
72
|
+
REFUSED: string;
|
|
73
|
+
BADQUERY: string;
|
|
74
|
+
BADNAME: string;
|
|
75
|
+
BADFAMILY: string;
|
|
76
|
+
BADRESP: string;
|
|
77
|
+
CONNREFUSED: string;
|
|
78
|
+
TIMEOUT: string;
|
|
79
|
+
EOF: string;
|
|
80
|
+
FILE: string;
|
|
81
|
+
NOMEM: string;
|
|
82
|
+
DESTRUCTION: string;
|
|
83
|
+
BADSTR: string;
|
|
84
|
+
BADFLAGS: string;
|
|
85
|
+
NONAME: string;
|
|
86
|
+
BADHINTS: string;
|
|
87
|
+
NOTINITIALIZED: string;
|
|
88
|
+
CANCELLED: string;
|
|
89
|
+
};
|
|
90
|
+
export default _default;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { LookupOptions, LookupAddress } from './index.js';
|
|
2
|
+
export declare function lookup(hostname: string, options?: LookupOptions | number): Promise<LookupAddress | LookupAddress[]>;
|
|
3
|
+
export declare function resolve4(hostname: string): Promise<string[]>;
|
|
4
|
+
export declare function resolve6(hostname: string): Promise<string[]>;
|
|
5
|
+
export declare function reverse(ip: string): Promise<string[]>;
|
|
6
|
+
export declare function resolve(hostname: string, rrtype?: string): Promise<any[]>;
|
|
7
|
+
declare const _default: {
|
|
8
|
+
lookup: typeof lookup;
|
|
9
|
+
resolve: typeof resolve;
|
|
10
|
+
resolve4: typeof resolve4;
|
|
11
|
+
resolve6: typeof resolve6;
|
|
12
|
+
reverse: typeof reverse;
|
|
13
|
+
};
|
|
14
|
+
export default _default;
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@gjsify/dns",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Node.js dns module for Gjs",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"module": "lib/esm/index.js",
|
|
7
|
+
"types": "lib/types/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"types": "./lib/types/index.d.ts",
|
|
11
|
+
"default": "./lib/esm/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./promises": {
|
|
14
|
+
"types": "./lib/types/promises.d.ts",
|
|
15
|
+
"default": "./lib/esm/promises.js"
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
"scripts": {
|
|
19
|
+
"clear": "rm -rf lib tsconfig.tsbuildinfo tsconfig.types.tsbuildinfo test.gjs.mjs test.node.mjs || exit 0",
|
|
20
|
+
"check": "tsc --noEmit",
|
|
21
|
+
"build": "yarn build:gjsify && yarn build:types",
|
|
22
|
+
"build:gjsify": "gjsify build --library 'src/**/*.{ts,js}' --exclude 'src/**/*.spec.{mts,ts}' 'src/test.{mts,ts}'",
|
|
23
|
+
"build:types": "tsc",
|
|
24
|
+
"build:test": "yarn build:test:gjs && yarn build:test:node",
|
|
25
|
+
"build:test:gjs": "gjsify build src/test.mts --app gjs --outfile test.gjs.mjs",
|
|
26
|
+
"build:test:node": "gjsify build src/test.mts --app node --outfile test.node.mjs",
|
|
27
|
+
"test": "yarn build:gjsify && yarn build:test && yarn test:node && yarn test:gjs",
|
|
28
|
+
"test:gjs": "gjs -m test.gjs.mjs",
|
|
29
|
+
"test:node": "node test.node.mjs"
|
|
30
|
+
},
|
|
31
|
+
"keywords": [
|
|
32
|
+
"gjs",
|
|
33
|
+
"node",
|
|
34
|
+
"dns"
|
|
35
|
+
],
|
|
36
|
+
"devDependencies": {
|
|
37
|
+
"@gjsify/cli": "^0.1.0",
|
|
38
|
+
"@gjsify/unit": "^0.1.0",
|
|
39
|
+
"@types/node": "^25.5.0",
|
|
40
|
+
"typescript": "^6.0.2"
|
|
41
|
+
},
|
|
42
|
+
"dependencies": {
|
|
43
|
+
"@girs/gio-2.0": "^2.88.0-4.0.0-beta.42",
|
|
44
|
+
"@girs/glib-2.0": "^2.88.0-4.0.0-beta.42",
|
|
45
|
+
"@gjsify/net": "^0.1.0",
|
|
46
|
+
"@gjsify/utils": "^0.1.0"
|
|
47
|
+
}
|
|
48
|
+
}
|