@hasna/domains 0.0.27 → 0.0.30
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 +28 -0
- package/dist/cli/commands/brandsight.d.ts.map +1 -1
- package/dist/cli/commands/db.d.ts +7 -0
- package/dist/cli/commands/db.d.ts.map +1 -0
- package/dist/cli/commands/dns.d.ts.map +1 -1
- package/dist/cli/commands/domain.d.ts.map +1 -1
- package/dist/cli/commands/history.d.ts.map +1 -1
- package/dist/cli/commands/monitor.d.ts.map +1 -1
- package/dist/cli/commands/outreach.d.ts.map +1 -1
- package/dist/cli/commands/owner.d.ts.map +1 -1
- package/dist/cli/commands/research.d.ts.map +1 -1
- package/dist/cli/commands/route53.d.ts.map +1 -1
- package/dist/cli/commands/sedo.d.ts.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/ssl.d.ts.map +1 -1
- package/dist/cli/commands/wallet.d.ts.map +1 -1
- package/dist/cli/commands/zone.d.ts.map +1 -1
- package/dist/cli/index.js +62413 -40499
- package/dist/cli/tui/App.d.ts.map +1 -1
- package/dist/cli/tui/DomainDetail.d.ts +1 -1
- package/dist/cli/tui/DomainDetail.d.ts.map +1 -1
- package/dist/db/dns-tools.d.ts +10 -6
- package/dist/db/dns-tools.d.ts.map +1 -1
- package/dist/db/domain-owners.d.ts +6 -21
- package/dist/db/domain-owners.d.ts.map +1 -1
- package/dist/db/domain-reputation.d.ts +0 -11
- package/dist/db/domain-reputation.d.ts.map +1 -1
- package/dist/db/domain-research.d.ts +1 -1
- package/dist/db/domain-research.d.ts.map +1 -1
- package/dist/db/domains.d.ts +51 -8
- package/dist/db/domains.d.ts.map +1 -1
- package/dist/db/history.d.ts +27 -0
- package/dist/db/history.d.ts.map +1 -0
- package/dist/db/monitoring.d.ts +2 -2
- package/dist/db/monitoring.d.ts.map +1 -1
- package/dist/db/owners.d.ts +48 -0
- package/dist/db/owners.d.ts.map +1 -0
- package/dist/db/reputation.d.ts +28 -0
- package/dist/db/reputation.d.ts.map +1 -0
- package/dist/db/store.d.ts +249 -0
- package/dist/db/store.d.ts.map +1 -0
- package/dist/generated/storage-kit/health.d.ts +20 -0
- package/dist/generated/storage-kit/health.d.ts.map +1 -0
- package/dist/generated/storage-kit/index.d.ts +8 -0
- package/dist/generated/storage-kit/index.d.ts.map +1 -0
- package/dist/generated/storage-kit/migrations.d.ts +48 -0
- package/dist/generated/storage-kit/migrations.d.ts.map +1 -0
- package/dist/generated/storage-kit/mode.d.ts +48 -0
- package/dist/generated/storage-kit/mode.d.ts.map +1 -0
- package/dist/generated/storage-kit/pool.d.ts +34 -0
- package/dist/generated/storage-kit/pool.d.ts.map +1 -0
- package/dist/generated/storage-kit/query.d.ts +36 -0
- package/dist/generated/storage-kit/query.d.ts.map +1 -0
- package/dist/generated/storage-kit/tls.d.ts +26 -0
- package/dist/generated/storage-kit/tls.d.ts.map +1 -0
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +47868 -26139
- package/dist/lib/brandsight.d.ts +3 -3
- package/dist/lib/brandsight.d.ts.map +1 -1
- package/dist/lib/cloudflare.js +3 -3
- package/dist/lib/compact-output.d.ts +31 -0
- package/dist/lib/compact-output.d.ts.map +1 -0
- package/dist/lib/godaddy.d.ts +3 -3
- package/dist/lib/godaddy.d.ts.map +1 -1
- package/dist/lib/namecheap.d.ts +5 -5
- package/dist/lib/namecheap.d.ts.map +1 -1
- package/dist/lib/registrar.d.ts +4 -4
- package/dist/lib/registrar.d.ts.map +1 -1
- package/dist/lib/registrar.js +17 -17
- package/dist/lib/route53.js +3 -3
- package/dist/lib/sedo.d.ts +1 -1
- package/dist/lib/sedo.d.ts.map +1 -1
- package/dist/mcp/http.d.ts +8 -3
- package/dist/mcp/http.d.ts.map +1 -1
- package/dist/mcp/index.d.ts.map +1 -1
- package/dist/mcp/index.js +32250 -10445
- package/dist/sdk/client.d.ts +198 -0
- package/dist/sdk/client.d.ts.map +1 -0
- package/dist/sdk/index.d.ts +14 -0
- package/dist/sdk/index.d.ts.map +1 -0
- package/dist/sdk/index.js +176 -0
- package/dist/server/app.d.ts +33 -0
- package/dist/server/app.d.ts.map +1 -0
- package/dist/server/index.d.ts +19 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +2388 -0
- package/dist/server/migrations.d.ts +22 -0
- package/dist/server/migrations.d.ts.map +1 -0
- package/dist/server/openapi.d.ts +25 -0
- package/dist/server/openapi.d.ts.map +1 -0
- package/dist/server/repo.d.ts +96 -0
- package/dist/server/repo.d.ts.map +1 -0
- package/package.json +13 -7
- package/dist/cli/commands/domains.d.ts +0 -3
- package/dist/cli/commands/domains.d.ts.map +0 -1
- package/dist/cli/commands/storage.d.ts +0 -3
- package/dist/cli/commands/storage.d.ts.map +0 -1
- package/dist/db/remote-storage.d.ts +0 -10
- package/dist/db/remote-storage.d.ts.map +0 -1
- package/dist/db/storage-sync.d.ts +0 -55
- package/dist/db/storage-sync.d.ts.map +0 -1
- package/dist/mcp/storage-tools.d.ts +0 -3
- package/dist/mcp/storage-tools.d.ts.map +0 -1
- package/dist/storage.d.ts +0 -5
- package/dist/storage.d.ts.map +0 -1
- package/dist/storage.js +0 -5691
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { type HasnaStorageClient } from "@hasna/contracts/client/storage";
|
|
2
|
+
import * as records from "./domain-records.js";
|
|
3
|
+
import * as dns from "./dns-records.js";
|
|
4
|
+
import * as alertsDb from "./alerts.js";
|
|
5
|
+
import * as owners from "./domain-owners.js";
|
|
6
|
+
import * as history from "./domain-history.js";
|
|
7
|
+
import * as reputation from "./domain-reputation.js";
|
|
8
|
+
import type { CreateDomainInput, Domain, DomainDetails, DomainEmailLink, DomainOffer, DomainStats, ListDomainsOptions, RecordDomainPurchaseInput, UpdateDomainInput, CreateDomainOfferInput, CreateDomainEmailLinkInput, DomainStatus } from "./domain-records.js";
|
|
9
|
+
import type { DnsRecord, CreateDnsRecordInput, UpdateDnsRecordInput } from "./dns-records.js";
|
|
10
|
+
import type { Alert, CreateAlertInput } from "./alerts.js";
|
|
11
|
+
import type { DomainOwner, CreateDomainOwnerInput, DomainOwnerSource, DomainWithOwner } from "./domain-owners.js";
|
|
12
|
+
import type { DomainHistory, CreateHistoryEntryInput, DomainHistoryType } from "./domain-history.js";
|
|
13
|
+
import type { DomainReputation, CreateReputationInput } from "./domain-reputation.js";
|
|
14
|
+
type Env = Record<string, string | undefined>;
|
|
15
|
+
export interface DomainsStore {
|
|
16
|
+
/** Which transport backs this store (for banners/diagnostics only). */
|
|
17
|
+
readonly transport: "local" | "cloud-http";
|
|
18
|
+
createDomain(input: CreateDomainInput): Promise<Domain>;
|
|
19
|
+
getDomain(id: string): Promise<Domain | null>;
|
|
20
|
+
getDomainByName(name: string): Promise<Domain | null>;
|
|
21
|
+
getDomainByIdentifier(identifier: string): Promise<Domain | null>;
|
|
22
|
+
getDomainDetails(identifier: string): Promise<DomainDetails | null>;
|
|
23
|
+
listDomains(options?: ListDomainsOptions): Promise<Domain[]>;
|
|
24
|
+
updateDomain(id: string, input: UpdateDomainInput): Promise<Domain | null>;
|
|
25
|
+
deleteDomain(id: string): Promise<boolean>;
|
|
26
|
+
countDomains(): Promise<number>;
|
|
27
|
+
searchDomains(query: string): Promise<Domain[]>;
|
|
28
|
+
getByRegistrar(registrar: string): Promise<Domain[]>;
|
|
29
|
+
listExpiring(days: number): Promise<Domain[]>;
|
|
30
|
+
listSslExpiring(days: number): Promise<Domain[]>;
|
|
31
|
+
getDomainStats(): Promise<DomainStats>;
|
|
32
|
+
markDomainPremium(identifier: string, premiumPrice: number, standardPrice?: number): Promise<Domain | null>;
|
|
33
|
+
updateDomainLifecycleStatus(identifier: string, status: DomainStatus, notes?: string): Promise<Domain | null>;
|
|
34
|
+
recordDomainPurchase(identifier: string, input: RecordDomainPurchaseInput): Promise<Domain | null>;
|
|
35
|
+
createDomainOffer(input: CreateDomainOfferInput): Promise<DomainOffer>;
|
|
36
|
+
getDomainOffer(id: string): Promise<DomainOffer | null>;
|
|
37
|
+
listDomainOffers(domainId: string): Promise<DomainOffer[]>;
|
|
38
|
+
linkDomainEmail(input: CreateDomainEmailLinkInput): Promise<DomainEmailLink>;
|
|
39
|
+
getDomainEmailLink(id: string): Promise<DomainEmailLink | null>;
|
|
40
|
+
listDomainEmailLinks(domainId: string): Promise<DomainEmailLink[]>;
|
|
41
|
+
createDnsRecord(input: CreateDnsRecordInput): Promise<DnsRecord>;
|
|
42
|
+
getDnsRecord(id: string): Promise<DnsRecord | null>;
|
|
43
|
+
listDnsRecords(domainId: string, type?: DnsRecord["type"]): Promise<DnsRecord[]>;
|
|
44
|
+
updateDnsRecord(id: string, input: UpdateDnsRecordInput): Promise<DnsRecord | null>;
|
|
45
|
+
deleteDnsRecord(id: string): Promise<boolean>;
|
|
46
|
+
createAlert(input: CreateAlertInput): Promise<Alert>;
|
|
47
|
+
getAlert(id: string): Promise<Alert | null>;
|
|
48
|
+
listAlerts(domainId: string): Promise<Alert[]>;
|
|
49
|
+
deleteAlert(id: string): Promise<boolean>;
|
|
50
|
+
createDomainOwner(input: CreateDomainOwnerInput): Promise<DomainOwner>;
|
|
51
|
+
getDomainOwner(id: string): Promise<DomainOwner | null>;
|
|
52
|
+
getDomainOwnerByDomain(domainId: string): Promise<DomainOwner | null>;
|
|
53
|
+
getDomainOwnerByDomainName(domainName: string): Promise<DomainOwner | null>;
|
|
54
|
+
listDomainOwners(options?: {
|
|
55
|
+
search?: string;
|
|
56
|
+
source?: DomainOwnerSource;
|
|
57
|
+
verified?: boolean;
|
|
58
|
+
}): Promise<DomainOwner[]>;
|
|
59
|
+
updateDomainOwner(id: string, input: Partial<CreateDomainOwnerInput>): Promise<DomainOwner | null>;
|
|
60
|
+
deleteDomainOwner(id: string): Promise<boolean>;
|
|
61
|
+
listDomainsWithOwners(): Promise<DomainWithOwner[]>;
|
|
62
|
+
createHistoryEntry(input: CreateHistoryEntryInput): Promise<DomainHistory>;
|
|
63
|
+
getHistoryEntry(id: string): Promise<DomainHistory | null>;
|
|
64
|
+
getHistoryByDomain(domainId: string, options?: {
|
|
65
|
+
type?: DomainHistoryType;
|
|
66
|
+
limit?: number;
|
|
67
|
+
}): Promise<DomainHistory[]>;
|
|
68
|
+
getLatestSnapshot(domainId: string, type: DomainHistoryType): Promise<DomainHistory | null>;
|
|
69
|
+
getHistoryByDateRange(startDate: string, endDate: string, domainId?: string): Promise<DomainHistory[]>;
|
|
70
|
+
listDomainsWithHistoryChanges(): Promise<Array<{
|
|
71
|
+
domain_id: string;
|
|
72
|
+
domain_name: string;
|
|
73
|
+
latest_snapshot_type: string;
|
|
74
|
+
latest_snapshot_at: string;
|
|
75
|
+
snapshot_count: number;
|
|
76
|
+
}>>;
|
|
77
|
+
deleteHistoryEntry(id: string): Promise<boolean>;
|
|
78
|
+
deleteHistoryByDomain(domainId: string): Promise<boolean>;
|
|
79
|
+
upsertDomainReputation(input: CreateReputationInput): Promise<DomainReputation>;
|
|
80
|
+
getDomainReputation(domainId: string): Promise<DomainReputation | null>;
|
|
81
|
+
getDomainReputationByName(domainName: string): Promise<DomainReputation | null>;
|
|
82
|
+
updateDomainReputation(id: string, input: Partial<CreateReputationInput>): Promise<DomainReputation | null>;
|
|
83
|
+
listBlacklistedDomains(): Promise<DomainReputation[]>;
|
|
84
|
+
listHighThreatDomains(threshold?: number): Promise<DomainReputation[]>;
|
|
85
|
+
deleteDomainReputation(id: string): Promise<boolean>;
|
|
86
|
+
}
|
|
87
|
+
export declare class LocalStore implements DomainsStore {
|
|
88
|
+
readonly transport: "local";
|
|
89
|
+
createDomain(input: CreateDomainInput): Promise<records.Domain>;
|
|
90
|
+
getDomain(id: string): Promise<records.Domain | null>;
|
|
91
|
+
getDomainByName(name: string): Promise<records.Domain | null>;
|
|
92
|
+
getDomainByIdentifier(identifier: string): Promise<records.Domain | null>;
|
|
93
|
+
getDomainDetails(identifier: string): Promise<records.DomainDetails | null>;
|
|
94
|
+
listDomains(options?: ListDomainsOptions): Promise<records.Domain[]>;
|
|
95
|
+
updateDomain(id: string, input: UpdateDomainInput): Promise<records.Domain | null>;
|
|
96
|
+
deleteDomain(id: string): Promise<boolean>;
|
|
97
|
+
countDomains(): Promise<number>;
|
|
98
|
+
searchDomains(query: string): Promise<records.Domain[]>;
|
|
99
|
+
getByRegistrar(registrar: string): Promise<records.Domain[]>;
|
|
100
|
+
listExpiring(days: number): Promise<records.Domain[]>;
|
|
101
|
+
listSslExpiring(days: number): Promise<records.Domain[]>;
|
|
102
|
+
getDomainStats(): Promise<records.DomainStats>;
|
|
103
|
+
markDomainPremium(identifier: string, premiumPrice: number, standardPrice?: number): Promise<records.Domain | null>;
|
|
104
|
+
updateDomainLifecycleStatus(identifier: string, status: DomainStatus, notes?: string): Promise<records.Domain | null>;
|
|
105
|
+
recordDomainPurchase(identifier: string, input: RecordDomainPurchaseInput): Promise<records.Domain | null>;
|
|
106
|
+
createDomainOffer(input: CreateDomainOfferInput): Promise<records.DomainOffer>;
|
|
107
|
+
getDomainOffer(id: string): Promise<records.DomainOffer | null>;
|
|
108
|
+
listDomainOffers(domainId: string): Promise<records.DomainOffer[]>;
|
|
109
|
+
linkDomainEmail(input: CreateDomainEmailLinkInput): Promise<records.DomainEmailLink>;
|
|
110
|
+
getDomainEmailLink(id: string): Promise<records.DomainEmailLink | null>;
|
|
111
|
+
listDomainEmailLinks(domainId: string): Promise<records.DomainEmailLink[]>;
|
|
112
|
+
createDnsRecord(input: CreateDnsRecordInput): Promise<dns.DnsRecord>;
|
|
113
|
+
getDnsRecord(id: string): Promise<dns.DnsRecord | null>;
|
|
114
|
+
listDnsRecords(domainId: string, type?: DnsRecord["type"]): Promise<dns.DnsRecord[]>;
|
|
115
|
+
updateDnsRecord(id: string, input: UpdateDnsRecordInput): Promise<dns.DnsRecord | null>;
|
|
116
|
+
deleteDnsRecord(id: string): Promise<boolean>;
|
|
117
|
+
createAlert(input: CreateAlertInput): Promise<alertsDb.Alert>;
|
|
118
|
+
getAlert(id: string): Promise<alertsDb.Alert | null>;
|
|
119
|
+
listAlerts(domainId: string): Promise<alertsDb.Alert[]>;
|
|
120
|
+
deleteAlert(id: string): Promise<boolean>;
|
|
121
|
+
createDomainOwner(input: CreateDomainOwnerInput): Promise<owners.DomainOwner>;
|
|
122
|
+
getDomainOwner(id: string): Promise<owners.DomainOwner | null>;
|
|
123
|
+
getDomainOwnerByDomain(domainId: string): Promise<owners.DomainOwner | null>;
|
|
124
|
+
getDomainOwnerByDomainName(domainName: string): Promise<owners.DomainOwner | null>;
|
|
125
|
+
listDomainOwners(options?: {
|
|
126
|
+
search?: string;
|
|
127
|
+
source?: DomainOwnerSource;
|
|
128
|
+
verified?: boolean;
|
|
129
|
+
}): Promise<owners.DomainOwner[]>;
|
|
130
|
+
updateDomainOwner(id: string, input: Partial<CreateDomainOwnerInput>): Promise<owners.DomainOwner | null>;
|
|
131
|
+
deleteDomainOwner(id: string): Promise<boolean>;
|
|
132
|
+
listDomainsWithOwners(): Promise<owners.DomainWithOwner[]>;
|
|
133
|
+
createHistoryEntry(input: CreateHistoryEntryInput): Promise<history.DomainHistory>;
|
|
134
|
+
getHistoryEntry(id: string): Promise<history.DomainHistory | null>;
|
|
135
|
+
getHistoryByDomain(domainId: string, options?: {
|
|
136
|
+
type?: DomainHistoryType;
|
|
137
|
+
limit?: number;
|
|
138
|
+
}): Promise<history.DomainHistory[]>;
|
|
139
|
+
getLatestSnapshot(domainId: string, type: DomainHistoryType): Promise<history.DomainHistory | null>;
|
|
140
|
+
getHistoryByDateRange(startDate: string, endDate: string, domainId?: string): Promise<history.DomainHistory[]>;
|
|
141
|
+
listDomainsWithHistoryChanges(): Promise<{
|
|
142
|
+
domain_id: string;
|
|
143
|
+
domain_name: string;
|
|
144
|
+
latest_snapshot_type: string;
|
|
145
|
+
latest_snapshot_at: string;
|
|
146
|
+
snapshot_count: number;
|
|
147
|
+
}[]>;
|
|
148
|
+
deleteHistoryEntry(id: string): Promise<boolean>;
|
|
149
|
+
deleteHistoryByDomain(domainId: string): Promise<boolean>;
|
|
150
|
+
upsertDomainReputation(input: CreateReputationInput): Promise<reputation.DomainReputation>;
|
|
151
|
+
getDomainReputation(domainId: string): Promise<reputation.DomainReputation | null>;
|
|
152
|
+
getDomainReputationByName(domainName: string): Promise<reputation.DomainReputation | null>;
|
|
153
|
+
updateDomainReputation(id: string, input: Partial<CreateReputationInput>): Promise<reputation.DomainReputation | null>;
|
|
154
|
+
listBlacklistedDomains(): Promise<reputation.DomainReputation[]>;
|
|
155
|
+
listHighThreatDomains(threshold?: number): Promise<reputation.DomainReputation[]>;
|
|
156
|
+
deleteDomainReputation(id: string): Promise<boolean>;
|
|
157
|
+
}
|
|
158
|
+
export declare class ApiStore implements DomainsStore {
|
|
159
|
+
private readonly client;
|
|
160
|
+
readonly transport: "cloud-http";
|
|
161
|
+
constructor(client: HasnaStorageClient);
|
|
162
|
+
private get http();
|
|
163
|
+
createDomain(input: CreateDomainInput): Promise<Domain>;
|
|
164
|
+
getDomain(id: string): Promise<Domain | null>;
|
|
165
|
+
getDomainByName(name: string): Promise<Domain | null>;
|
|
166
|
+
getDomainByIdentifier(identifier: string): Promise<Domain | null>;
|
|
167
|
+
getDomainDetails(identifier: string): Promise<DomainDetails | null>;
|
|
168
|
+
listDomains(options?: ListDomainsOptions): Promise<Domain[]>;
|
|
169
|
+
updateDomain(id: string, input: UpdateDomainInput): Promise<Domain | null>;
|
|
170
|
+
deleteDomain(id: string): Promise<boolean>;
|
|
171
|
+
countDomains(): Promise<number>;
|
|
172
|
+
searchDomains(query: string): Promise<Domain[]>;
|
|
173
|
+
getByRegistrar(registrar: string): Promise<Domain[]>;
|
|
174
|
+
listExpiring(days: number): Promise<Domain[]>;
|
|
175
|
+
listSslExpiring(days: number): Promise<Domain[]>;
|
|
176
|
+
getDomainStats(): Promise<DomainStats>;
|
|
177
|
+
markDomainPremium(identifier: string, premiumPrice: number, standardPrice?: number): Promise<Domain | null>;
|
|
178
|
+
updateDomainLifecycleStatus(identifier: string, status: DomainStatus, notes?: string): Promise<Domain | null>;
|
|
179
|
+
recordDomainPurchase(identifier: string, input: RecordDomainPurchaseInput): Promise<Domain | null>;
|
|
180
|
+
createDomainOffer(input: CreateDomainOfferInput): Promise<DomainOffer>;
|
|
181
|
+
getDomainOffer(id: string): Promise<DomainOffer | null>;
|
|
182
|
+
listDomainOffers(domainId: string): Promise<DomainOffer[]>;
|
|
183
|
+
linkDomainEmail(input: CreateDomainEmailLinkInput): Promise<DomainEmailLink>;
|
|
184
|
+
getDomainEmailLink(id: string): Promise<DomainEmailLink | null>;
|
|
185
|
+
listDomainEmailLinks(domainId: string): Promise<DomainEmailLink[]>;
|
|
186
|
+
createDnsRecord(input: CreateDnsRecordInput): Promise<DnsRecord>;
|
|
187
|
+
getDnsRecord(id: string): Promise<DnsRecord | null>;
|
|
188
|
+
listDnsRecords(domainId: string, type?: DnsRecord["type"]): Promise<DnsRecord[]>;
|
|
189
|
+
updateDnsRecord(id: string, input: UpdateDnsRecordInput): Promise<DnsRecord | null>;
|
|
190
|
+
deleteDnsRecord(id: string): Promise<boolean>;
|
|
191
|
+
createAlert(input: CreateAlertInput): Promise<Alert>;
|
|
192
|
+
getAlert(id: string): Promise<Alert | null>;
|
|
193
|
+
listAlerts(domainId: string): Promise<Alert[]>;
|
|
194
|
+
deleteAlert(id: string): Promise<boolean>;
|
|
195
|
+
createDomainOwner(input: CreateDomainOwnerInput): Promise<DomainOwner>;
|
|
196
|
+
getDomainOwner(id: string): Promise<DomainOwner | null>;
|
|
197
|
+
getDomainOwnerByDomain(domainId: string): Promise<DomainOwner | null>;
|
|
198
|
+
getDomainOwnerByDomainName(domainName: string): Promise<DomainOwner | null>;
|
|
199
|
+
listDomainOwners(options?: {
|
|
200
|
+
search?: string;
|
|
201
|
+
source?: DomainOwnerSource;
|
|
202
|
+
verified?: boolean;
|
|
203
|
+
}): Promise<DomainOwner[]>;
|
|
204
|
+
updateDomainOwner(id: string, input: Partial<CreateDomainOwnerInput>): Promise<DomainOwner | null>;
|
|
205
|
+
deleteDomainOwner(id: string): Promise<boolean>;
|
|
206
|
+
listDomainsWithOwners(): Promise<DomainWithOwner[]>;
|
|
207
|
+
createHistoryEntry(input: CreateHistoryEntryInput): Promise<DomainHistory>;
|
|
208
|
+
getHistoryEntry(id: string): Promise<DomainHistory | null>;
|
|
209
|
+
getHistoryByDomain(domainId: string, options?: {
|
|
210
|
+
type?: DomainHistoryType;
|
|
211
|
+
limit?: number;
|
|
212
|
+
}): Promise<DomainHistory[]>;
|
|
213
|
+
getLatestSnapshot(domainId: string, type: DomainHistoryType): Promise<DomainHistory | null>;
|
|
214
|
+
getHistoryByDateRange(startDate: string, endDate: string, domainId?: string): Promise<DomainHistory[]>;
|
|
215
|
+
listDomainsWithHistoryChanges(): Promise<Array<{
|
|
216
|
+
domain_id: string;
|
|
217
|
+
domain_name: string;
|
|
218
|
+
latest_snapshot_type: string;
|
|
219
|
+
latest_snapshot_at: string;
|
|
220
|
+
snapshot_count: number;
|
|
221
|
+
}>>;
|
|
222
|
+
deleteHistoryEntry(id: string): Promise<boolean>;
|
|
223
|
+
deleteHistoryByDomain(domainId: string): Promise<boolean>;
|
|
224
|
+
upsertDomainReputation(input: CreateReputationInput): Promise<DomainReputation>;
|
|
225
|
+
getDomainReputation(domainId: string): Promise<DomainReputation | null>;
|
|
226
|
+
getDomainReputationByName(domainName: string): Promise<DomainReputation | null>;
|
|
227
|
+
updateDomainReputation(id: string, input: Partial<CreateReputationInput>): Promise<DomainReputation | null>;
|
|
228
|
+
listBlacklistedDomains(): Promise<DomainReputation[]>;
|
|
229
|
+
listHighThreatDomains(threshold?: number): Promise<DomainReputation[]>;
|
|
230
|
+
deleteDomainReputation(id: string): Promise<boolean>;
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Return an env in which `self_hosted` is implied when the API URL + key are
|
|
234
|
+
* present but no explicit storage mode is set. Leaves an explicit mode
|
|
235
|
+
* (including `local`) untouched, so the flip stays reversible. The fleet flip
|
|
236
|
+
* writes only the two `HASNA_DOMAINS_API_URL` + `HASNA_DOMAINS_API_KEY` vars.
|
|
237
|
+
*/
|
|
238
|
+
export declare function domainsCloudEnv(env?: Env): Env;
|
|
239
|
+
/**
|
|
240
|
+
* Resolve the active {@link DomainsStore} for the current environment. Returns an
|
|
241
|
+
* {@link ApiStore} when the client-flip contract resolves to cloud-http
|
|
242
|
+
* (self_hosted/cloud), else a {@link LocalStore}. Throws if cloud was requested
|
|
243
|
+
* but is misconfigured (so callers can never silently read the wrong dataset).
|
|
244
|
+
*/
|
|
245
|
+
export declare function getStore(env?: Env): DomainsStore;
|
|
246
|
+
/** True when the resolved store is the cloud HTTP transport. */
|
|
247
|
+
export declare function isCloudStore(env?: Env): boolean;
|
|
248
|
+
export {};
|
|
249
|
+
//# sourceMappingURL=store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/db/store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TypedQueryClient } from "./query.js";
|
|
2
|
+
import { type Migration, type MigrationRunnerOptions } from "./migrations.js";
|
|
3
|
+
export interface HealthResult {
|
|
4
|
+
ok: boolean;
|
|
5
|
+
/** Round-trip latency of the probe query, in milliseconds. */
|
|
6
|
+
latencyMs: number;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
/** Cheap reachability probe: `SELECT 1`. Never throws — reports `ok: false`. */
|
|
10
|
+
export declare function checkHealth(client: TypedQueryClient): Promise<HealthResult>;
|
|
11
|
+
export interface ReadyResult extends HealthResult {
|
|
12
|
+
/** Migration ids that are defined but not yet applied. */
|
|
13
|
+
pendingMigrations: string[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Readiness probe: reachable AND fully migrated. Reports `ok: false` with the
|
|
17
|
+
* list of pending migration ids when the schema is behind.
|
|
18
|
+
*/
|
|
19
|
+
export declare function checkReady(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions): Promise<ReadyResult>;
|
|
20
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/health.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAmB,KAAK,SAAS,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAE/F,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,OAAO,CAAC;IACZ,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,gFAAgF;AAChF,wBAAsB,WAAW,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,YAAY,CAAC,CAYjF;AAED,MAAM,WAAW,WAAY,SAAQ,YAAY;IAC/C,0DAA0D;IAC1D,iBAAiB,EAAE,MAAM,EAAE,CAAC;CAC7B;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,WAAW,CAAC,CAetB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/index.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,WAAW,UAAU,CAAC;AAEnC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { TypedQueryClient } from "./query.js";
|
|
2
|
+
/** Default ledger table name. Override per app if a legacy name exists. */
|
|
3
|
+
export declare const DEFAULT_MIGRATION_LEDGER_TABLE = "schema_migrations";
|
|
4
|
+
export interface Migration {
|
|
5
|
+
readonly id: string;
|
|
6
|
+
readonly sql: string;
|
|
7
|
+
readonly checksum: string;
|
|
8
|
+
}
|
|
9
|
+
export type MigrationState = "already_applied" | "pending";
|
|
10
|
+
export interface MigrationPlanItem {
|
|
11
|
+
readonly migration: Migration;
|
|
12
|
+
readonly state: MigrationState;
|
|
13
|
+
}
|
|
14
|
+
export interface AppliedMigration {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly checksum: string;
|
|
17
|
+
readonly appliedAt: string;
|
|
18
|
+
}
|
|
19
|
+
export interface MigrationResult {
|
|
20
|
+
readonly dryRun: boolean;
|
|
21
|
+
readonly applied: AppliedMigration[];
|
|
22
|
+
readonly plan: MigrationPlanItem[];
|
|
23
|
+
}
|
|
24
|
+
/** Stable sha256 checksum for a migration's SQL text. */
|
|
25
|
+
export declare function checksumSql(sql: string): string;
|
|
26
|
+
/** Freeze a migration definition, computing its checksum from the SQL. */
|
|
27
|
+
export declare function defineMigration(id: string, sql: string): Migration;
|
|
28
|
+
export interface MigrationRunnerOptions {
|
|
29
|
+
ledgerTable?: string;
|
|
30
|
+
}
|
|
31
|
+
export declare class MigrationLedger {
|
|
32
|
+
private readonly client;
|
|
33
|
+
private readonly migrations;
|
|
34
|
+
private readonly ledgerTable;
|
|
35
|
+
constructor(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions);
|
|
36
|
+
ensureLedger(): Promise<void>;
|
|
37
|
+
listApplied(): Promise<AppliedMigration[]>;
|
|
38
|
+
private readApplied;
|
|
39
|
+
/** Compute the migration plan and guard against drift/downgrade. */
|
|
40
|
+
private buildPlan;
|
|
41
|
+
/** Apply all pending migrations. With `dryRun`, report the plan only. */
|
|
42
|
+
migrate(opts?: {
|
|
43
|
+
dryRun?: boolean;
|
|
44
|
+
}): Promise<MigrationResult>;
|
|
45
|
+
}
|
|
46
|
+
/** Convenience: build a ledger and run all pending migrations. */
|
|
47
|
+
export declare function createMigrationLedger(client: TypedQueryClient, migrations: readonly Migration[], options?: MigrationRunnerOptions): MigrationLedger;
|
|
48
|
+
//# sourceMappingURL=migrations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migrations.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/migrations.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEnD,2EAA2E;AAC3E,eAAO,MAAM,8BAA8B,sBAAsB,CAAC;AAElE,MAAM,WAAW,SAAS;IACxB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,cAAc,GAAG,iBAAiB,GAAG,SAAS,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,CAAC;IACrC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,EAAE,CAAC;CACpC;AAED,yDAAyD;AACzD,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAG/C;AAED,0EAA0E;AAC1E,wBAAgB,eAAe,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAElE;AAQD,MAAM,WAAW,sBAAsB;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,UAAU;IAJ7B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAS;gBAGlB,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,SAAS,EAAE,EACjD,OAAO,GAAE,sBAA2B;IAUhC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAU7B,WAAW,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;YAKlC,WAAW;IAWzB,oEAAoE;IACpE,OAAO,CAAC,SAAS;IAsBjB,yEAAyE;IACnE,OAAO,CAAC,IAAI,GAAE;QAAE,MAAM,CAAC,EAAE,OAAO,CAAA;KAAO,GAAG,OAAO,CAAC,eAAe,CAAC;CAiBzE;AAED,kEAAkE;AAClE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,gBAAgB,EACxB,UAAU,EAAE,SAAS,SAAS,EAAE,EAChC,OAAO,GAAE,sBAA2B,GACnC,eAAe,CAEjB"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
export declare const STORAGE_MODES: readonly ["local", "cloud"];
|
|
2
|
+
export type StorageMode = (typeof STORAGE_MODES)[number];
|
|
3
|
+
export declare const DEPRECATED_STORAGE_MODE_ALIASES: readonly ["remote", "hybrid", "self_hosted"];
|
|
4
|
+
export type Env = Record<string, string | undefined>;
|
|
5
|
+
export interface StorageModeNormalization {
|
|
6
|
+
mode: StorageMode;
|
|
7
|
+
/** The deprecated alias that was normalized to `cloud`, if any. */
|
|
8
|
+
deprecatedAlias: string | null;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Normalize a raw storage-mode string to the `local | cloud` runtime enum.
|
|
12
|
+
* Accepts deprecated aliases (`remote`, `hybrid`, `self_hosted`) and maps them
|
|
13
|
+
* to `cloud`. Throws on any other value.
|
|
14
|
+
*/
|
|
15
|
+
export declare function normalizeStorageMode(value: string): StorageModeNormalization;
|
|
16
|
+
/** Upper-snake env token for an app name, e.g. `todos` -> `TODOS`. */
|
|
17
|
+
export declare function envToken(name: string): string;
|
|
18
|
+
export interface StorageEnvKeys {
|
|
19
|
+
/** `HASNA_<NAME>_STORAGE_MODE` then the optional `<NAME>_STORAGE_MODE` alias. */
|
|
20
|
+
modeKeys: string[];
|
|
21
|
+
/** `HASNA_<NAME>_DATABASE_URL` then the optional `<NAME>_DATABASE_URL` alias. */
|
|
22
|
+
databaseUrlKeys: string[];
|
|
23
|
+
}
|
|
24
|
+
/** Resolve the canonical env-key spec for an app's storage config. */
|
|
25
|
+
export declare function storageEnvKeys(name: string): StorageEnvKeys;
|
|
26
|
+
export interface StorageModeResolution {
|
|
27
|
+
mode: StorageMode;
|
|
28
|
+
/** Env key the mode came from, or `"default"`. */
|
|
29
|
+
source: string;
|
|
30
|
+
deprecatedAlias: string | null;
|
|
31
|
+
databaseUrlPresent: boolean;
|
|
32
|
+
/** Env key the database URL came from, or `null`. */
|
|
33
|
+
databaseUrlSource: string | null;
|
|
34
|
+
warning: string | null;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Resolve an app's storage mode from the environment per the contract env spec.
|
|
38
|
+
* Precedence: `HASNA_<NAME>_STORAGE_MODE`, then `<NAME>_STORAGE_MODE`, else
|
|
39
|
+
* `local`. Never reads secret values — only detects DATABASE_URL presence.
|
|
40
|
+
*/
|
|
41
|
+
export declare function resolveStorageMode(name: string, env?: Env): StorageModeResolution;
|
|
42
|
+
/**
|
|
43
|
+
* Resolve the database URL value for an app, honoring the canonical then alias
|
|
44
|
+
* env keys. Returns `null` when unset. The caller is responsible for never
|
|
45
|
+
* logging the returned value.
|
|
46
|
+
*/
|
|
47
|
+
export declare function resolveDatabaseUrl(name: string, env?: Env): string | null;
|
|
48
|
+
//# sourceMappingURL=mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mode.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/mode.ts"],"names":[],"mappings":"AAiBA,eAAO,MAAM,aAAa,6BAA8B,CAAC;AACzD,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAEzD,eAAO,MAAM,+BAA+B,8CAIlC,CAAC;AAEX,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAErD,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,mEAAmE;IACnE,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,wBAAwB,CAQ5E;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,MAAM,WAAW,cAAc;IAC7B,iFAAiF;IACjF,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iFAAiF;IACjF,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,sEAAsE;AACtE,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAM3D;AAUD,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,WAAW,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAiB,GAAG,qBAAqB,CAwC9F;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAiB,GAAG,MAAM,GAAG,IAAI,CAItF"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Pool } from "pg";
|
|
2
|
+
import { type TlsResolveOptions } from "./tls.js";
|
|
3
|
+
import { type PoolQueryClient } from "./query.js";
|
|
4
|
+
export interface CreatePgPoolOptions extends TlsResolveOptions {
|
|
5
|
+
connectionString: string;
|
|
6
|
+
/** Max clients in the pool. Defaults to pg's default (10). */
|
|
7
|
+
max?: number;
|
|
8
|
+
/** Idle client timeout (ms). */
|
|
9
|
+
idleTimeoutMillis?: number;
|
|
10
|
+
/** Connection acquisition timeout (ms). */
|
|
11
|
+
connectionTimeoutMillis?: number;
|
|
12
|
+
/** Application name reported to Postgres (shows in pg_stat_activity). */
|
|
13
|
+
applicationName?: string;
|
|
14
|
+
}
|
|
15
|
+
/** Build a `pg.Pool` with fleet-standard TLS handling. */
|
|
16
|
+
export declare function createPgPool(options: CreatePgPoolOptions): Pool;
|
|
17
|
+
export interface CreateCloudPoolFromEnvOptions extends TlsResolveOptions {
|
|
18
|
+
max?: number;
|
|
19
|
+
idleTimeoutMillis?: number;
|
|
20
|
+
connectionTimeoutMillis?: number;
|
|
21
|
+
applicationName?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface CloudPoolFromEnv {
|
|
24
|
+
client: PoolQueryClient;
|
|
25
|
+
connectionSource: string;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Resolve mode + database URL from the environment and build a cloud pool.
|
|
29
|
+
*
|
|
30
|
+
* Throws when the resolved mode is not `cloud` (PURE REMOTE has no Postgres in
|
|
31
|
+
* `local` mode) or when the database URL is missing. Never logs the URL.
|
|
32
|
+
*/
|
|
33
|
+
export declare function createCloudPoolFromEnv(appName: string, options?: CreateCloudPoolFromEnvOptions): CloudPoolFromEnv;
|
|
34
|
+
//# sourceMappingURL=pool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pool.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/pool.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,IAAI,EAAc,MAAM,IAAI,CAAC;AAE3C,OAAO,EAAoB,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,WAAW,mBAAoB,SAAQ,iBAAiB;IAC5D,gBAAgB,EAAE,MAAM,CAAC;IACzB,8DAA8D;IAC9D,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,gCAAgC;IAChC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,2CAA2C;IAC3C,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,yEAAyE;IACzE,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,0DAA0D;AAC1D,wBAAgB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,IAAI,CAe/D;AAED,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;IACtE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,eAAe,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;CAC1B;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,6BAAkC,GAC1C,gBAAgB,CAgClB"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Pool, QueryResultRow } from "pg";
|
|
2
|
+
export interface QueryResult<T extends QueryResultRow> {
|
|
3
|
+
rows: T[];
|
|
4
|
+
rowCount: number;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Minimal executor contract. `pg.Pool` and `pg.PoolClient` both satisfy the
|
|
8
|
+
* `query` method; the wrapper builds the rest on top so tests can substitute a
|
|
9
|
+
* lightweight shim without pulling in a live Postgres.
|
|
10
|
+
*/
|
|
11
|
+
export interface PgExecutor {
|
|
12
|
+
query<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<{
|
|
13
|
+
rows: T[];
|
|
14
|
+
rowCount: number | null;
|
|
15
|
+
}>;
|
|
16
|
+
}
|
|
17
|
+
export interface TypedQueryClient {
|
|
18
|
+
query<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<QueryResult<T>>;
|
|
19
|
+
many<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T[]>;
|
|
20
|
+
/** First row or `null`. Restored here after open-knowledge dropped it. */
|
|
21
|
+
get<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T | null>;
|
|
22
|
+
/** Exactly one row; throws if zero or more than one row is returned. */
|
|
23
|
+
one<T extends QueryResultRow>(sql: string, params?: readonly unknown[]): Promise<T>;
|
|
24
|
+
execute(sql: string, params?: readonly unknown[]): Promise<void>;
|
|
25
|
+
}
|
|
26
|
+
/** Wrap any `PgExecutor` (a Pool, a PoolClient, or a test shim) with the typed vocabulary. */
|
|
27
|
+
export declare function wrapExecutor(executor: PgExecutor): TypedQueryClient;
|
|
28
|
+
export interface PoolQueryClient extends TypedQueryClient {
|
|
29
|
+
readonly pool: Pool;
|
|
30
|
+
/** Run a callback inside a `BEGIN`/`COMMIT` transaction on a dedicated client. */
|
|
31
|
+
transaction<T>(fn: (client: TypedQueryClient) => Promise<T>): Promise<T>;
|
|
32
|
+
close(): Promise<void>;
|
|
33
|
+
}
|
|
34
|
+
/** Build a `PoolQueryClient` around a live `pg.Pool`. */
|
|
35
|
+
export declare function createQueryClient(pool: Pool): PoolQueryClient;
|
|
36
|
+
//# sourceMappingURL=query.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/query.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,IAAI,EAAc,cAAc,EAAE,MAAM,IAAI,CAAC;AAE3D,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,cAAc;IACnD,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,KAAK,CAAC,CAAC,SAAS,cAAc,EAC5B,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAC1B,OAAO,CAAC;QAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;IACnG,IAAI,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IACvF,0EAA0E;IAC1E,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAC3F,wEAAwE;IACxE,GAAG,CAAC,CAAC,SAAS,cAAc,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACpF,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAClE;AAED,8FAA8F;AAC9F,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,GAAG,gBAAgB,CAyBnE;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,kFAAkF;IAClF,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,gBAAgB,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,GAAG,eAAe,CA2B7D"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/** The `ssl` field shape accepted by `pg.Pool` / `pg.Client`. */
|
|
2
|
+
export type PgSslConfig = boolean | {
|
|
3
|
+
rejectUnauthorized: boolean;
|
|
4
|
+
ca?: string;
|
|
5
|
+
};
|
|
6
|
+
export interface TlsResolveOptions {
|
|
7
|
+
/** Inline CA bundle (PEM). Wins over every other CA source. */
|
|
8
|
+
ca?: string;
|
|
9
|
+
/** Path to a CA bundle PEM file, e.g. the Amazon RDS global bundle. */
|
|
10
|
+
caCertPath?: string;
|
|
11
|
+
/** Environment used to discover PGSSLROOTCERT / NODE_EXTRA_CA_CERTS. */
|
|
12
|
+
env?: Record<string, string | undefined>;
|
|
13
|
+
}
|
|
14
|
+
export type SslMode = "disable" | "prefer" | "require" | "verify-ca" | "verify-full";
|
|
15
|
+
/**
|
|
16
|
+
* Extract the effective `sslmode` from a Postgres connection string. Honors the
|
|
17
|
+
* `sslmode` query param and the legacy `ssl=true` boolean. Returns `disable`
|
|
18
|
+
* when TLS is not requested.
|
|
19
|
+
*/
|
|
20
|
+
export declare function sslModeFromConnectionString(connectionString: string): SslMode;
|
|
21
|
+
/**
|
|
22
|
+
* Resolve the `pg` ssl config for a connection string. See the module header
|
|
23
|
+
* for the full mode table. Returns `undefined` when TLS should be off.
|
|
24
|
+
*/
|
|
25
|
+
export declare function resolveTlsConfig(connectionString: string, options?: TlsResolveOptions): PgSslConfig | undefined;
|
|
26
|
+
//# sourceMappingURL=tls.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tls.d.ts","sourceRoot":"","sources":["../../../src/generated/storage-kit/tls.ts"],"names":[],"mappings":"AAkCA,iEAAiE;AACjE,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG;IAAE,kBAAkB,EAAE,OAAO,CAAC;IAAC,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,WAAW,iBAAiB;IAChC,+DAA+D;IAC/D,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,uEAAuE;IACvE,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,wEAAwE;IACxE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;CAC1C;AAED,MAAM,MAAM,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,aAAa,CAAC;AAErF;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAwB7E;AAUD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,gBAAgB,EAAE,MAAM,EACxB,OAAO,GAAE,iBAAsB,GAC9B,WAAW,GAAG,SAAS,CA2BzB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,11 +5,10 @@ export { DOMAIN_STATUSES, DOMAIN_OFFER_STATUSES, DOMAIN_EMAIL_TYPES, createDomai
|
|
|
5
5
|
export { createDnsRecord, getDnsRecord, listDnsRecords, updateDnsRecord, deleteDnsRecord, type DnsRecord, type CreateDnsRecordInput, type UpdateDnsRecordInput, } from "./db/domains.js";
|
|
6
6
|
export { createAlert, getAlert, listAlerts, deleteAlert, type Alert, type CreateAlertInput, } from "./db/domains.js";
|
|
7
7
|
export { whoisLookup, checkDnsPropagation, checkSsl, exportZoneFile, importZoneFile, discoverSubdomains, validateDns, exportPortfolio, checkAllDomains, type WhoisResult, type DnsPropagationResult, type SslCheckResult, type ZoneImportResult, type SubdomainResult, type DnsValidationIssue, type DnsValidationResult, type BulkCheckResult, } from "./db/domains.js";
|
|
8
|
-
export {
|
|
9
|
-
export {
|
|
10
|
-
export {
|
|
11
|
-
export {
|
|
12
|
-
export type { StorageMode, StorageStatus, StorageSyncMeta, StorageSyncResult, SyncMeta, SyncResult, } from "./db/storage-sync.js";
|
|
8
|
+
export { getStore, isCloudStore, LocalStore, ApiStore, type DomainsStore, } from "./db/store.js";
|
|
9
|
+
export { createDomainOwner, getDomainOwner, getDomainOwnerByDomain, getDomainOwnerByDomainName, listDomainOwners, updateDomainOwner, deleteDomainOwner, listDomainsWithOwners, extractOwnerFromWhois, linkOwnerToContacts, DOMAIN_OWNER_SOURCES, type DomainOwner, type DomainOwnerSource, type CreateDomainOwnerInput, type DomainWithOwner, } from "./db/owners.js";
|
|
10
|
+
export { createHistoryEntry, getHistoryEntry, getHistoryByDomain, getLatestSnapshot, getHistoryByDateRange, getLatestByDomainName, listDomainsWithHistoryChanges, deleteHistoryEntry, deleteHistoryByDomain, HISTORY_TYPES, type DomainHistory, type DomainHistoryType, type CreateHistoryEntryInput, } from "./db/history.js";
|
|
11
|
+
export { upsertDomainReputation, getDomainReputation, getDomainReputationByName, updateDomainReputation, listBlacklistedDomains, listHighThreatDomains, deleteDomainReputation, checkDomainReputation, checkDnsBlacklist, type DomainReputation, type CreateReputationInput, } from "./db/reputation.js";
|
|
13
12
|
export { getProvider, getAvailableProviders, getProviderInfo, getDomainInventoryProvider, providerHasRegistrar, providerHasDns, providerHasInventory, syncAll, autoDetectRegistrar, type DomainInventoryProvider, type RegistrarProvider, type ProviderDnsRecord, type ProviderDomainInfo, type ProviderSyncResult, type ProviderAvailability, type ProviderInfo, type SyncAllResult, } from "./lib/registrar.js";
|
|
14
13
|
export { checkAvailability as r53CheckAvailability, getTldPrice as r53GetTldPrice, listTldPrices as r53ListTldPrices, registerDomain as r53RegisterDomain, transferDomain as r53TransferDomain, getRegistrationStatus as r53GetRegistrationStatus, requestTransferOutAuthCode as r53RequestTransferOutAuthCode, updateNameservers as r53UpdateNameservers, listRegisteredDomains as r53ListRegisteredDomains, createHostedZone as r53CreateHostedZone, listHostedZones as r53ListHostedZones, getHostedZone as r53GetHostedZone, deleteHostedZone as r53DeleteHostedZone, findHostedZoneByDomain as r53FindHostedZoneByDomain, findHostedZoneByNameservers as r53FindHostedZoneByNameservers, listRecords as r53ListRecords, upsertRecord as r53UpsertRecord, upsertRecords as r53UpsertRecords, deleteRecord as r53DeleteRecord, createRoute53Provider, getConfig as r53GetConfig, type Route53Config, type DomainContactInfo, type DomainAvailability, type Route53RegistrarOptions, type Route53OperationStatus, type Route53TransferOutAuthCode, type Route53TldPrice, type RegisteredDomain, type HostedZoneInfo, type Route53ChangeOptions, type Route53ChangeResult, type Route53Record, type Route53RecordInput, } from "./lib/route53.js";
|
|
15
14
|
export { createZone as cfCreateZone, getZone as cfGetZone, ensureZone as cfEnsureZone, upsertRecord as cfUpsertRecord, type CloudflareZone, } from "./lib/cloudflare.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,SAAS,EACT,qBAAqB,EACrB,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,2BAA2B,EAC3B,oBAAoB,EACpB,YAAY,EACZ,YAAY,EACZ,aAAa,EACb,cAAc,EACd,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,iBAAiB,EACjB,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,kBAAkB,EAClB,oBAAoB,EACpB,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,0BAA0B,EAC/B,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,yBAAyB,GAC/B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,eAAe,EACf,YAAY,EACZ,cAAc,EACd,eAAe,EACf,eAAe,EACf,KAAK,SAAS,EACd,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,GAC1B,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,QAAQ,EACR,UAAU,EACV,WAAW,EACX,KAAK,KAAK,EACV,KAAK,gBAAgB,GACtB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,WAAW,EACX,mBAAmB,EACnB,QAAQ,EACR,cAAc,EACd,cAAc,EACd,kBAAkB,EAClB,WAAW,EACX,eAAe,EACf,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,oBAAoB,EACzB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,mBAAmB,EACxB,KAAK,eAAe,GACrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|