@hasna/domains 0.0.12 → 0.0.14
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/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/domain.d.ts.map +1 -1
- package/dist/cli/commands/provision.d.ts +3 -0
- package/dist/cli/commands/provision.d.ts.map +1 -0
- package/dist/cli/index.js +478 -255
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +178 -9
- package/dist/lib/brandsight.d.ts +20 -0
- package/dist/lib/brandsight.d.ts.map +1 -1
- package/dist/lib/capability.d.ts +30 -0
- package/dist/lib/capability.d.ts.map +1 -0
- package/dist/lib/cloudflare-auth.d.ts +15 -0
- package/dist/lib/cloudflare-auth.d.ts.map +1 -0
- package/dist/lib/cloudflare.d.ts +13 -4
- package/dist/lib/cloudflare.d.ts.map +1 -1
- package/dist/lib/creds-check.d.ts +13 -0
- package/dist/lib/creds-check.d.ts.map +1 -0
- package/dist/lib/delegate.d.ts +28 -0
- package/dist/lib/delegate.d.ts.map +1 -0
- package/dist/lib/domain-daemon.d.ts +30 -0
- package/dist/lib/domain-daemon.d.ts.map +1 -0
- package/dist/lib/godaddy.d.ts +12 -0
- package/dist/lib/godaddy.d.ts.map +1 -1
- package/dist/lib/ns-drift.d.ts +29 -0
- package/dist/lib/ns-drift.d.ts.map +1 -0
- package/dist/lib/provision-state.d.ts +29 -0
- package/dist/lib/provision-state.d.ts.map +1 -0
- package/dist/lib/registration-poll.d.ts +24 -0
- package/dist/lib/registration-poll.d.ts.map +1 -0
- package/dist/lib/route53.d.ts +17 -0
- package/dist/lib/route53.d.ts.map +1 -1
- package/dist/mcp/index.js +42 -9
- package/package.json +1 -1
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Domain provisioning state machine (open-domains side) — pure transitions plus
|
|
3
|
+
* a `deriveDomainState` that maps live signals (registered? zone? NS delegated?
|
|
4
|
+
* propagated? active?) to the current lifecycle state. The CLI `provision-status`
|
|
5
|
+
* command derives state live so no extra persistence is required, while the
|
|
6
|
+
* daemon advances domains transition-by-transition.
|
|
7
|
+
*/
|
|
8
|
+
export type DomainProvState = "requested" | "registered" | "cf_zone_ready" | "ns_delegated" | "ns_propagated" | "dns_managed" | "ready" | "failed";
|
|
9
|
+
export type DomainProvAction = "register" | "create_cf_zone" | "delegate_ns" | "check_ns_propagation" | "verify_dns" | "finalize";
|
|
10
|
+
interface Step {
|
|
11
|
+
action: DomainProvAction;
|
|
12
|
+
next: DomainProvState;
|
|
13
|
+
}
|
|
14
|
+
export declare const DOMAIN_FLOW: Record<Exclude<DomainProvState, "ready" | "failed">, Step>;
|
|
15
|
+
export declare function isDomainTerminal(s: DomainProvState): boolean;
|
|
16
|
+
export declare function domainActionFor(s: DomainProvState): DomainProvAction | null;
|
|
17
|
+
export declare function domainNext(s: DomainProvState): DomainProvState | null;
|
|
18
|
+
export declare function domainHappyPath(): DomainProvState[];
|
|
19
|
+
export interface DomainSignals {
|
|
20
|
+
registered?: boolean;
|
|
21
|
+
zoneExists?: boolean;
|
|
22
|
+
registrarNsAreCloudflare?: boolean;
|
|
23
|
+
publicNsAreCloudflare?: boolean;
|
|
24
|
+
zoneActive?: boolean;
|
|
25
|
+
}
|
|
26
|
+
/** Map observed live signals to the furthest lifecycle state reached. */
|
|
27
|
+
export declare function deriveDomainState(sig: DomainSignals): DomainProvState;
|
|
28
|
+
export {};
|
|
29
|
+
//# sourceMappingURL=provision-state.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provision-state.d.ts","sourceRoot":"","sources":["../../src/lib/provision-state.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,MAAM,eAAe,GACvB,WAAW,GACX,YAAY,GACZ,eAAe,GACf,cAAc,GACd,eAAe,GACf,aAAa,GACb,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,MAAM,gBAAgB,GACxB,UAAU,GACV,gBAAgB,GAChB,aAAa,GACb,sBAAsB,GACtB,YAAY,GACZ,UAAU,CAAC;AAEf,UAAU,IAAI;IAAG,MAAM,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,eAAe,CAAA;CAAE;AAElE,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,OAAO,GAAG,QAAQ,CAAC,EAAE,IAAI,CAOlF,CAAC;AAIF,wBAAgB,gBAAgB,CAAC,CAAC,EAAE,eAAe,GAAG,OAAO,CAE5D;AACD,wBAAgB,eAAe,CAAC,CAAC,EAAE,eAAe,GAAG,gBAAgB,GAAG,IAAI,CAG3E;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,eAAe,GAAG,eAAe,GAAG,IAAI,CAGrE;AACD,wBAAgB,eAAe,IAAI,eAAe,EAAE,CAEnD;AAED,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAChC,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,yEAAyE;AACzE,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,aAAa,GAAG,eAAe,CAOrE"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route53 domain-registration polling — pure, reusable by the buy command and
|
|
3
|
+
* the domain provisioning daemon. The AWS status string is classified into a
|
|
4
|
+
* terminal/pending verdict; pollRegistrationUntilDone drives it to completion
|
|
5
|
+
* with an injectable status getter + sleep (so it is fully unit-testable).
|
|
6
|
+
*/
|
|
7
|
+
export type RegVerdict = "pending" | "success" | "failed";
|
|
8
|
+
export declare function classifyRegistrationStatus(status: string): RegVerdict;
|
|
9
|
+
export interface PollResult {
|
|
10
|
+
status: "success" | "failed" | "timeout";
|
|
11
|
+
attempts: number;
|
|
12
|
+
message?: string;
|
|
13
|
+
}
|
|
14
|
+
export interface PollOptions {
|
|
15
|
+
getStatus: (operationId: string) => Promise<{
|
|
16
|
+
status: string;
|
|
17
|
+
message?: string;
|
|
18
|
+
}>;
|
|
19
|
+
maxAttempts?: number;
|
|
20
|
+
intervalMs?: number;
|
|
21
|
+
sleep?: (ms: number) => Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
export declare function pollRegistrationUntilDone(operationId: string, opts: PollOptions): Promise<PollResult>;
|
|
24
|
+
//# sourceMappingURL=registration-poll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registration-poll.d.ts","sourceRoot":"","sources":["../../src/lib/registration-poll.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE1D,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,UAAU,CAKrE;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED,wBAAsB,yBAAyB,CAC7C,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,WAAW,GAChB,OAAO,CAAC,UAAU,CAAC,CAerB"}
|
package/dist/lib/route53.d.ts
CHANGED
|
@@ -85,6 +85,22 @@ export interface DomainDetail extends RegisteredDomain {
|
|
|
85
85
|
nameservers: string[];
|
|
86
86
|
}
|
|
87
87
|
export declare function getDomainDetail(domain: string, config?: Route53Config): Promise<DomainDetail>;
|
|
88
|
+
/** Minimal Route53 Domains client surface — lets tests inject a fake `send`. */
|
|
89
|
+
type Route53DomainsSend = {
|
|
90
|
+
send: (cmd: unknown) => Promise<{
|
|
91
|
+
OperationId?: string;
|
|
92
|
+
}>;
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* Point a domain's nameservers at a new set (the Cloudflare zone NS).
|
|
96
|
+
*
|
|
97
|
+
* Enforces the always-Cloudflare-DNS rule: after a domain is registered with
|
|
98
|
+
* ANY registrar, delegate DNS to Cloudflare by calling this with the Cloudflare
|
|
99
|
+
* zone's nameservers. Returns the async operation id (poll getOperationDetail).
|
|
100
|
+
*/
|
|
101
|
+
export declare function updateNameservers(domain: string, nameservers: string[], config?: Route53Config, client?: Route53DomainsSend): Promise<{
|
|
102
|
+
operationId: string;
|
|
103
|
+
}>;
|
|
88
104
|
export declare function listRegisteredDomains(config?: Route53Config): Promise<RegisteredDomain[]>;
|
|
89
105
|
export declare function createHostedZone(domain: string, comment?: string, config?: Route53Config): Promise<HostedZoneInfo>;
|
|
90
106
|
export declare function listHostedZones(config?: Route53Config): Promise<HostedZoneInfo[]>;
|
|
@@ -98,4 +114,5 @@ export declare function upsertRecord(hostedZoneId: string, record: Route53Record
|
|
|
98
114
|
export declare function deleteRecord(hostedZoneId: string, record: Route53RecordInput, config?: Route53Config): Promise<void>;
|
|
99
115
|
export declare function upsertRecords(hostedZoneId: string, records: Route53RecordInput[], config?: Route53Config): Promise<void>;
|
|
100
116
|
export declare function createRoute53Provider(config?: Route53Config): FullProvider;
|
|
117
|
+
export {};
|
|
101
118
|
//# sourceMappingURL=route53.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"route53.d.ts","sourceRoot":"","sources":["../../src/lib/route53.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"route53.d.ts","sourceRoot":"","sources":["../../src/lib/route53.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp/index.js
CHANGED
|
@@ -16073,7 +16073,7 @@ var require_package = __commonJS((exports, module) => {
|
|
|
16073
16073
|
|
|
16074
16074
|
// node_modules/@aws-sdk/util-user-agent-node/dist-cjs/index.js
|
|
16075
16075
|
var require_dist_cjs41 = __commonJS((exports) => {
|
|
16076
|
-
var __dirname = "/
|
|
16076
|
+
var __dirname = "/home/hasna/workspace/hasna/opensource/open-domains/node_modules/@aws-sdk/util-user-agent-node/dist-cjs";
|
|
16077
16077
|
var node_os = __require("os");
|
|
16078
16078
|
var node_process = __require("process");
|
|
16079
16079
|
var utilConfigProvider = require_dist_cjs33();
|
|
@@ -30795,6 +30795,7 @@ var exports_route53 = {};
|
|
|
30795
30795
|
__export(exports_route53, {
|
|
30796
30796
|
upsertRecords: () => upsertRecords,
|
|
30797
30797
|
upsertRecord: () => upsertRecord,
|
|
30798
|
+
updateNameservers: () => updateNameservers,
|
|
30798
30799
|
registerDomain: () => registerDomain,
|
|
30799
30800
|
listRegisteredDomains: () => listRegisteredDomains,
|
|
30800
30801
|
listRecords: () => listRecords,
|
|
@@ -30908,6 +30909,17 @@ async function getDomainDetail(domain, config) {
|
|
|
30908
30909
|
nameservers: (result.Nameservers ?? []).map((ns) => ns.Name ?? "").filter(Boolean)
|
|
30909
30910
|
};
|
|
30910
30911
|
}
|
|
30912
|
+
async function updateNameservers(domain, nameservers, config, client) {
|
|
30913
|
+
if (!nameservers.length) {
|
|
30914
|
+
throw new Error("updateNameservers requires at least one nameserver");
|
|
30915
|
+
}
|
|
30916
|
+
const domains = client ?? makeClients(config).domains;
|
|
30917
|
+
const result = await domains.send(new UpdateDomainNameserversCommand({
|
|
30918
|
+
DomainName: domain,
|
|
30919
|
+
Nameservers: nameservers.map((name) => ({ Name: name }))
|
|
30920
|
+
}));
|
|
30921
|
+
return { operationId: result.OperationId ?? "" };
|
|
30922
|
+
}
|
|
30911
30923
|
async function listRegisteredDomains(config) {
|
|
30912
30924
|
const { domains } = makeClients(config);
|
|
30913
30925
|
const all = [];
|
|
@@ -36950,17 +36962,38 @@ async function syncToLocalDb2(dbFns) {
|
|
|
36950
36962
|
// src/lib/registrar.ts
|
|
36951
36963
|
init_route53();
|
|
36952
36964
|
|
|
36965
|
+
// src/lib/cloudflare-auth.ts
|
|
36966
|
+
function resolveCloudflareConfig(env = process.env) {
|
|
36967
|
+
const accountId = env["CLOUDFLARE_ACCOUNT_ID"] || env["HASNAXYZ_CLOUDFLARE_LIVE_ACCOUNT_ID"] || undefined;
|
|
36968
|
+
if (env["CLOUDFLARE_API_TOKEN"]) {
|
|
36969
|
+
return { apiToken: env["CLOUDFLARE_API_TOKEN"], accountId };
|
|
36970
|
+
}
|
|
36971
|
+
if (env["CLOUDFLARE_API_KEY"] && env["CLOUDFLARE_EMAIL"]) {
|
|
36972
|
+
return { apiKey: env["CLOUDFLARE_API_KEY"], email: env["CLOUDFLARE_EMAIL"], accountId };
|
|
36973
|
+
}
|
|
36974
|
+
if (env["HASNAXYZ_CLOUDFLARE_LIVE_API_KEY"] && env["HASNAXYZ_CLOUDFLARE_LIVE_EMAIL"]) {
|
|
36975
|
+
return {
|
|
36976
|
+
apiKey: env["HASNAXYZ_CLOUDFLARE_LIVE_API_KEY"],
|
|
36977
|
+
email: env["HASNAXYZ_CLOUDFLARE_LIVE_EMAIL"],
|
|
36978
|
+
accountId
|
|
36979
|
+
};
|
|
36980
|
+
}
|
|
36981
|
+
return accountId ? { accountId } : {};
|
|
36982
|
+
}
|
|
36983
|
+
function cloudflareAuthHeaders(cfg) {
|
|
36984
|
+
if (cfg.apiToken)
|
|
36985
|
+
return { Authorization: `Bearer ${cfg.apiToken}` };
|
|
36986
|
+
if (cfg.apiKey && cfg.email)
|
|
36987
|
+
return { "X-Auth-Key": cfg.apiKey, "X-Auth-Email": cfg.email };
|
|
36988
|
+
throw new Error("Cloudflare credentials not configured. Set CLOUDFLARE_API_TOKEN, or CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL.");
|
|
36989
|
+
}
|
|
36990
|
+
|
|
36953
36991
|
// src/lib/cloudflare.ts
|
|
36954
36992
|
function getConfig3() {
|
|
36955
|
-
return
|
|
36956
|
-
apiToken: process.env["CLOUDFLARE_API_TOKEN"],
|
|
36957
|
-
accountId: process.env["CLOUDFLARE_ACCOUNT_ID"]
|
|
36958
|
-
};
|
|
36993
|
+
return resolveCloudflareConfig();
|
|
36959
36994
|
}
|
|
36960
36995
|
function checkCredentials2(cfg) {
|
|
36961
|
-
|
|
36962
|
-
throw new Error("Cloudflare credentials not configured. Set CLOUDFLARE_API_TOKEN environment variable.");
|
|
36963
|
-
}
|
|
36996
|
+
cloudflareAuthHeaders(cfg);
|
|
36964
36997
|
}
|
|
36965
36998
|
var CF_BASE = "https://api.cloudflare.com/client/v4";
|
|
36966
36999
|
async function cfFetch(path, opts = {}) {
|
|
@@ -36969,7 +37002,7 @@ async function cfFetch(path, opts = {}) {
|
|
|
36969
37002
|
const res = await fetch(`${CF_BASE}${path}`, {
|
|
36970
37003
|
method: opts.method ?? "GET",
|
|
36971
37004
|
headers: {
|
|
36972
|
-
|
|
37005
|
+
...cloudflareAuthHeaders(cfg),
|
|
36973
37006
|
"Content-Type": "application/json"
|
|
36974
37007
|
},
|
|
36975
37008
|
body: opts.body ? JSON.stringify(opts.body) : undefined
|