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 ADDED
@@ -0,0 +1,9 @@
1
+ # dk-domain-agent
2
+
3
+ CLI for checking `.dk` domain availability through public Punktum WHOIS.
4
+
5
+ ```bash
6
+ npx -y dk-domain-agent@0.1.0 check mitdomæne.dk --json
7
+ ```
8
+
9
+ Results are WHOIS-inferred, not authoritative registry availability.
@@ -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
+ }