@gjsify/example-node-cli-dns-lookup 0.1.6 → 0.1.7

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.
@@ -0,0 +1,108 @@
1
+ import { createRequire as __gjsify_createRequire } from 'module';
2
+ const require = __gjsify_createRequire(import.meta.url);
3
+
4
+ // ../../../packages/gjs/runtime/lib/esm/index.js
5
+ var isGJS = typeof process !== "undefined" && typeof process.versions?.gjs === "string";
6
+ var isNode = typeof process !== "undefined" && typeof process.versions?.node === "string";
7
+ var runtimeName = isGJS ? "GJS" : isNode ? "Node.js" : "Unknown";
8
+ var runtimeVersion = isGJS ? process.versions.gjs : isNode ? process.versions.node : void 0;
9
+
10
+ // src/index.ts
11
+ import { lookup, resolve4, resolve6, reverse } from "node:dns";
12
+ import { isIP, isIPv4, isIPv6 } from "node:net";
13
+ var RESET = "\x1B[0m";
14
+ var GREEN = "\x1B[32m";
15
+ var YELLOW = "\x1B[33m";
16
+ var CYAN = "\x1B[36m";
17
+ var RED = "\x1B[31m";
18
+ var DIM = "\x1B[2m";
19
+ var BOLD = "\x1B[1m";
20
+ function lookupAsync(hostname) {
21
+ return new Promise((resolve, reject) => {
22
+ lookup(hostname, (err, address, family) => {
23
+ if (err) reject(err);
24
+ else resolve({ address, family });
25
+ });
26
+ });
27
+ }
28
+ function resolve4Async(hostname) {
29
+ return new Promise((resolve, reject) => {
30
+ resolve4(hostname, (err, addresses) => {
31
+ if (err) reject(err);
32
+ else resolve(addresses);
33
+ });
34
+ });
35
+ }
36
+ function resolve6Async(hostname) {
37
+ return new Promise((resolve, reject) => {
38
+ resolve6(hostname, (err, addresses) => {
39
+ if (err) reject(err);
40
+ else resolve(addresses);
41
+ });
42
+ });
43
+ }
44
+ function reverseAsync(ip) {
45
+ return new Promise((resolve, reject) => {
46
+ reverse(ip, (err, hostnames) => {
47
+ if (err) reject(err);
48
+ else resolve(hostnames);
49
+ });
50
+ });
51
+ }
52
+ async function lookupHostname(hostname) {
53
+ console.log(`
54
+ ${BOLD}${CYAN}DNS lookup: ${hostname}${RESET}
55
+ `);
56
+ try {
57
+ const { address, family } = await lookupAsync(hostname);
58
+ console.log(` ${GREEN}lookup:${RESET} ${address} (IPv${family})`);
59
+ } catch (err) {
60
+ console.log(` ${RED}lookup:${RESET} ${err.message}`);
61
+ }
62
+ try {
63
+ const ipv4 = await resolve4Async(hostname);
64
+ console.log(` ${GREEN}resolve4:${RESET} ${ipv4.join(", ") || "(none)"}`);
65
+ } catch (err) {
66
+ console.log(` ${DIM}resolve4: ${err.message}${RESET}`);
67
+ }
68
+ try {
69
+ const ipv6 = await resolve6Async(hostname);
70
+ console.log(` ${GREEN}resolve6:${RESET} ${ipv6.join(", ") || "(none)"}`);
71
+ } catch (err) {
72
+ console.log(` ${DIM}resolve6: ${err.message}${RESET}`);
73
+ }
74
+ }
75
+ async function reverseLookup(ip) {
76
+ console.log(`
77
+ ${BOLD}${CYAN}Reverse DNS: ${ip}${RESET}
78
+ `);
79
+ const version = isIPv4(ip) ? "IPv4" : isIPv6(ip) ? "IPv6" : "unknown";
80
+ console.log(` ${GREEN}type:${RESET} ${version} (isIP=${isIP(ip)})`);
81
+ try {
82
+ const hostnames = await reverseAsync(ip);
83
+ console.log(` ${GREEN}reverse:${RESET} ${hostnames.join(", ") || "(no PTR records)"}`);
84
+ } catch (err) {
85
+ console.log(` ${DIM}reverse: ${err.message}${RESET}`);
86
+ }
87
+ }
88
+ var argvOffset = process.argv.length >= 2 && /\.[cm]?[jt]s$/.test(process.argv[1]) ? 2 : 1;
89
+ var args = process.argv.slice(argvOffset);
90
+ console.log(`${DIM}gjsify DNS lookup tool \u2014 Runtime: ${runtimeName}${RESET}`);
91
+ if (args.length === 0) {
92
+ console.log(`${DIM}No arguments provided. Running demo lookups...${RESET}`);
93
+ const demoHosts = ["localhost", "example.com"];
94
+ for (const host of demoHosts) {
95
+ await lookupHostname(host);
96
+ }
97
+ await reverseLookup("127.0.0.1");
98
+ console.log(`
99
+ ${YELLOW}Usage:${RESET} dns-lookup <hostname|ip> [hostname|ip] ...`);
100
+ } else {
101
+ for (const arg of args) {
102
+ if (isIP(arg)) {
103
+ await reverseLookup(arg);
104
+ } else {
105
+ await lookupHostname(arg);
106
+ }
107
+ }
108
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@gjsify/example-node-cli-dns-lookup",
3
- "version": "0.1.6",
3
+ "version": "0.1.7",
4
4
  "description": "Interactive DNS lookup tool for Node.js and GJS",
5
5
  "main": "dist/index.gjs.js",
6
6
  "type": "module",
@@ -22,9 +22,9 @@
22
22
  "test": "yarn start"
23
23
  },
24
24
  "devDependencies": {
25
- "@gjsify/cli": "^0.1.6",
26
- "@gjsify/node-globals": "^0.1.6",
27
- "@gjsify/runtime": "^0.1.6",
25
+ "@gjsify/cli": "^0.1.7",
26
+ "@gjsify/node-globals": "^0.1.7",
27
+ "@gjsify/runtime": "^0.1.7",
28
28
  "@types/node": "^25.5.2",
29
29
  "typescript": "^6.0.2"
30
30
  }