dk-domain-agent 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 +9 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +113 -0
- package/dist/index.js.map +1 -0
- package/package.json +31 -0
package/README.md
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { checkDkDomainAvailability } from "dk-domain-agent-core";
|
|
3
|
+
type CheckAvailability = typeof checkDkDomainAvailability;
|
|
4
|
+
type CliIO = {
|
|
5
|
+
stdout: Pick<NodeJS.WriteStream, "write">;
|
|
6
|
+
stderr: Pick<NodeJS.WriteStream, "write">;
|
|
7
|
+
};
|
|
8
|
+
export declare function runCli(argv: string[], dependencies?: {
|
|
9
|
+
checker?: CheckAvailability;
|
|
10
|
+
io?: CliIO;
|
|
11
|
+
}): Promise<number>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,yBAAyB,EAAE,MAAM,sBAAsB,CAAC;AAGjE,KAAK,iBAAiB,GAAG,OAAO,yBAAyB,CAAC;AAE1D,KAAK,KAAK,GAAG;IACX,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;CAC3C,CAAC;AAUF,wBAAsB,MAAM,CAC1B,IAAI,EAAE,MAAM,EAAE,EACd,YAAY,GAAE;IAAE,OAAO,CAAC,EAAE,iBAAiB,CAAC;IAAC,EAAE,CAAC,EAAE,KAAK,CAAA;CAAO,GAC7D,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { checkDkDomainAvailability } from "dk-domain-agent-core";
|
|
3
|
+
import { pathToFileURL } from "node:url";
|
|
4
|
+
export async function runCli(argv, dependencies = {}) {
|
|
5
|
+
const args = parseArgs(argv);
|
|
6
|
+
const checker = dependencies.checker ?? checkDkDomainAvailability;
|
|
7
|
+
const io = dependencies.io ?? {
|
|
8
|
+
stdout: process.stdout,
|
|
9
|
+
stderr: process.stderr
|
|
10
|
+
};
|
|
11
|
+
switch (args.command) {
|
|
12
|
+
case "check":
|
|
13
|
+
return check(args, checker, io);
|
|
14
|
+
case "cache":
|
|
15
|
+
return cache(argv, io);
|
|
16
|
+
case "doctor":
|
|
17
|
+
return doctor(checker, io);
|
|
18
|
+
case "help":
|
|
19
|
+
case null:
|
|
20
|
+
printHelp(io);
|
|
21
|
+
return 0;
|
|
22
|
+
default:
|
|
23
|
+
writeLine(io.stderr, `Unknown command: ${args.command}`);
|
|
24
|
+
printHelp(io);
|
|
25
|
+
return 1;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
async function check(args, checker, io) {
|
|
29
|
+
if (!args.domain) {
|
|
30
|
+
writeLine(io.stderr, "Missing domain.");
|
|
31
|
+
return 1;
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const result = await checker(args.domain, {
|
|
35
|
+
bypassCache: args.noCache
|
|
36
|
+
});
|
|
37
|
+
if (args.json) {
|
|
38
|
+
writeLine(io.stdout, JSON.stringify(result, null, 2));
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
writeLine(io.stdout, `${result.domain}: ${result.status} (${result.confidence})`);
|
|
42
|
+
}
|
|
43
|
+
return result.status === "invalid" ? 1 : 0;
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
if (args.verbose) {
|
|
47
|
+
writeLine(io.stderr, String(error));
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
writeLine(io.stderr, error instanceof Error ? error.message : String(error));
|
|
51
|
+
}
|
|
52
|
+
return 2;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
async function cache(argv, io) {
|
|
56
|
+
if (argv[1] !== "clear") {
|
|
57
|
+
writeLine(io.stderr, "Usage: dk-domain cache clear");
|
|
58
|
+
return 1;
|
|
59
|
+
}
|
|
60
|
+
const { FileAvailabilityCache } = await import("dk-domain-agent-core");
|
|
61
|
+
const cache = new FileAvailabilityCache();
|
|
62
|
+
await cache.clear();
|
|
63
|
+
writeLine(io.stderr, "Cache cleared.");
|
|
64
|
+
return 0;
|
|
65
|
+
}
|
|
66
|
+
async function doctor(checker, io) {
|
|
67
|
+
writeLine(io.stderr, `Node: ${process.version}`);
|
|
68
|
+
writeLine(io.stderr, `State dir: ${process.env.DK_DOMAIN_AGENT_STATE_DIR ?? "~/.dk-domain-agent"}`);
|
|
69
|
+
const result = await checker("punktum.dk", {
|
|
70
|
+
bypassCache: true,
|
|
71
|
+
timeoutMs: 8000
|
|
72
|
+
});
|
|
73
|
+
writeLine(io.stdout, JSON.stringify({
|
|
74
|
+
ok: result.status === "registered" || result.status === "rate_limited",
|
|
75
|
+
whoisStatus: result.status,
|
|
76
|
+
checkedAt: result.checkedAt
|
|
77
|
+
}, null, 2));
|
|
78
|
+
return result.status === "unknown" ? 2 : 0;
|
|
79
|
+
}
|
|
80
|
+
function parseArgs(argv) {
|
|
81
|
+
const command = argv[0] ?? null;
|
|
82
|
+
const flags = new Set(argv.filter(arg => arg.startsWith("--")));
|
|
83
|
+
const positional = argv.filter(arg => !arg.startsWith("--"));
|
|
84
|
+
return {
|
|
85
|
+
command,
|
|
86
|
+
domain: command === "check" ? positional[1] : undefined,
|
|
87
|
+
json: flags.has("--json"),
|
|
88
|
+
noCache: flags.has("--no-cache"),
|
|
89
|
+
verbose: flags.has("--verbose")
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
function printHelp(io) {
|
|
93
|
+
writeLine(io.stdout, `Usage:
|
|
94
|
+
dk-domain check <domain> [--json] [--no-cache] [--verbose]
|
|
95
|
+
dk-domain cache clear
|
|
96
|
+
dk-domain doctor
|
|
97
|
+
|
|
98
|
+
Availability is inferred from public Punktum WHOIS and is not authoritative.`);
|
|
99
|
+
}
|
|
100
|
+
function writeLine(stream, line) {
|
|
101
|
+
stream.write(`${line}\n`);
|
|
102
|
+
}
|
|
103
|
+
if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
|
|
104
|
+
runCli(process.argv.slice(2))
|
|
105
|
+
.then(code => {
|
|
106
|
+
process.exitCode = code;
|
|
107
|
+
})
|
|
108
|
+
.catch(error => {
|
|
109
|
+
console.error(error instanceof Error ? error.message : String(error));
|
|
110
|
+
process.exitCode = 2;
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "dk-domain-agent",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "CLI for .dk WHOIS-inferred availability checks.",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"license": "Apache-2.0",
|
|
7
|
+
"sideEffects": false,
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"keywords": [
|
|
12
|
+
"dk",
|
|
13
|
+
"domain",
|
|
14
|
+
"whois",
|
|
15
|
+
"cli"
|
|
16
|
+
],
|
|
17
|
+
"main": "dist/index.js",
|
|
18
|
+
"types": "dist/index.d.ts",
|
|
19
|
+
"bin": {
|
|
20
|
+
"dk-domain": "dist/index.js"
|
|
21
|
+
},
|
|
22
|
+
"scripts": {
|
|
23
|
+
"clean": "node -e \"require('node:fs').rmSync('dist',{recursive:true,force:true})\"",
|
|
24
|
+
"build": "npm run clean && tsc -p tsconfig.json",
|
|
25
|
+
"test": "npm run build && vitest run",
|
|
26
|
+
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"dk-domain-agent-core": "0.1.0"
|
|
30
|
+
}
|
|
31
|
+
}
|