@sapiom/tools 0.11.0 → 0.13.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.
Files changed (76) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +4 -3
  3. package/dist/cjs/_client/capability-call.d.ts +58 -0
  4. package/dist/cjs/_client/capability-call.d.ts.map +1 -0
  5. package/dist/cjs/_client/capability-call.js +68 -0
  6. package/dist/cjs/_client/capability-call.js.map +1 -0
  7. package/dist/cjs/_client/index.d.ts +1 -0
  8. package/dist/cjs/_client/index.d.ts.map +1 -1
  9. package/dist/cjs/_client/index.js +4 -1
  10. package/dist/cjs/_client/index.js.map +1 -1
  11. package/dist/cjs/client.d.ts +33 -0
  12. package/dist/cjs/client.d.ts.map +1 -1
  13. package/dist/cjs/client.js +16 -0
  14. package/dist/cjs/client.js.map +1 -1
  15. package/dist/cjs/content-generation/index.d.ts +6 -0
  16. package/dist/cjs/content-generation/index.d.ts.map +1 -1
  17. package/dist/cjs/content-generation/index.js +32 -20
  18. package/dist/cjs/content-generation/index.js.map +1 -1
  19. package/dist/cjs/domains/errors.d.ts +16 -0
  20. package/dist/cjs/domains/errors.d.ts.map +1 -0
  21. package/dist/cjs/domains/errors.js +36 -0
  22. package/dist/cjs/domains/errors.js.map +1 -0
  23. package/dist/cjs/domains/index.d.ts +297 -0
  24. package/dist/cjs/domains/index.d.ts.map +1 -0
  25. package/dist/cjs/domains/index.js +348 -0
  26. package/dist/cjs/domains/index.js.map +1 -0
  27. package/dist/cjs/index.d.ts +2 -0
  28. package/dist/cjs/index.d.ts.map +1 -1
  29. package/dist/cjs/index.js +4 -1
  30. package/dist/cjs/index.js.map +1 -1
  31. package/dist/cjs/search/index.d.ts +6 -1
  32. package/dist/cjs/search/index.d.ts.map +1 -1
  33. package/dist/cjs/search/index.js +89 -90
  34. package/dist/cjs/search/index.js.map +1 -1
  35. package/dist/cjs/stub/index.d.ts.map +1 -1
  36. package/dist/cjs/stub/index.js +72 -0
  37. package/dist/cjs/stub/index.js.map +1 -1
  38. package/dist/esm/_client/capability-call.d.ts +58 -0
  39. package/dist/esm/_client/capability-call.d.ts.map +1 -0
  40. package/dist/esm/_client/capability-call.js +64 -0
  41. package/dist/esm/_client/capability-call.js.map +1 -0
  42. package/dist/esm/_client/index.d.ts +1 -0
  43. package/dist/esm/_client/index.d.ts.map +1 -1
  44. package/dist/esm/_client/index.js +1 -0
  45. package/dist/esm/_client/index.js.map +1 -1
  46. package/dist/esm/client.d.ts +33 -0
  47. package/dist/esm/client.d.ts.map +1 -1
  48. package/dist/esm/client.js +16 -0
  49. package/dist/esm/client.js.map +1 -1
  50. package/dist/esm/content-generation/index.d.ts +6 -0
  51. package/dist/esm/content-generation/index.d.ts.map +1 -1
  52. package/dist/esm/content-generation/index.js +33 -21
  53. package/dist/esm/content-generation/index.js.map +1 -1
  54. package/dist/esm/domains/errors.d.ts +16 -0
  55. package/dist/esm/domains/errors.d.ts.map +1 -0
  56. package/dist/esm/domains/errors.js +31 -0
  57. package/dist/esm/domains/errors.js.map +1 -0
  58. package/dist/esm/domains/index.d.ts +297 -0
  59. package/dist/esm/domains/index.d.ts.map +1 -0
  60. package/dist/esm/domains/index.js +335 -0
  61. package/dist/esm/domains/index.js.map +1 -0
  62. package/dist/esm/index.d.ts +2 -0
  63. package/dist/esm/index.d.ts.map +1 -1
  64. package/dist/esm/index.js +2 -0
  65. package/dist/esm/index.js.map +1 -1
  66. package/dist/esm/search/index.d.ts +6 -1
  67. package/dist/esm/search/index.d.ts.map +1 -1
  68. package/dist/esm/search/index.js +91 -92
  69. package/dist/esm/search/index.js.map +1 -1
  70. package/dist/esm/stub/index.d.ts.map +1 -1
  71. package/dist/esm/stub/index.js +72 -0
  72. package/dist/esm/stub/index.js.map +1 -1
  73. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  74. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  75. package/package.json +6 -1
  76. package/src/domains/README.md +76 -0
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Error thrown by the domains capability when a request fails (non-2xx
3
+ * response). Exposes `status` (HTTP status code) and `body` (parsed JSON body, or
4
+ * raw text when the body isn't JSON) for programmatic inspection.
5
+ */
6
+ export declare class DomainsHttpError extends Error {
7
+ readonly status: number;
8
+ readonly body: unknown;
9
+ constructor(message: string, status: number, body: unknown);
10
+ }
11
+ /**
12
+ * Return the response when 2xx, otherwise throw a {@link DomainsHttpError}.
13
+ * Parses the error body as JSON when possible; falls back to raw text.
14
+ */
15
+ export declare function ensureOk(response: Response, errorPrefix: string): Promise<Response>;
16
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/domains/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;gBAEX,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO;CAM3D;AAED;;;GAGG;AACH,wBAAsB,QAAQ,CAC5B,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,QAAQ,CAAC,CAcnB"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Error thrown by the domains capability when a request fails (non-2xx
3
+ * response). Exposes `status` (HTTP status code) and `body` (parsed JSON body, or
4
+ * raw text when the body isn't JSON) for programmatic inspection.
5
+ */
6
+ export class DomainsHttpError extends Error {
7
+ constructor(message, status, body) {
8
+ super(message);
9
+ this.name = "DomainsHttpError";
10
+ this.status = status;
11
+ this.body = body;
12
+ }
13
+ }
14
+ /**
15
+ * Return the response when 2xx, otherwise throw a {@link DomainsHttpError}.
16
+ * Parses the error body as JSON when possible; falls back to raw text.
17
+ */
18
+ export async function ensureOk(response, errorPrefix) {
19
+ if (response.ok)
20
+ return response;
21
+ let body;
22
+ const text = await response.text().catch(() => "");
23
+ try {
24
+ body = JSON.parse(text);
25
+ }
26
+ catch {
27
+ body = text;
28
+ }
29
+ throw new DomainsHttpError(`${errorPrefix}: ${response.status} ${text}`, response.status, body);
30
+ }
31
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/domains/errors.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,OAAO,gBAAiB,SAAQ,KAAK;IAIzC,YAAY,OAAe,EAAE,MAAc,EAAE,IAAa;QACxD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,kBAAkB,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,QAAkB,EAClB,WAAmB;IAEnB,IAAI,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,IAAa,CAAC;IAClB,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,GAAG,IAAI,CAAC;IACd,CAAC;IACD,MAAM,IAAI,gBAAgB,CACxB,GAAG,WAAW,KAAK,QAAQ,CAAC,MAAM,IAAI,IAAI,EAAE,EAC5C,QAAQ,CAAC,MAAM,EACf,IAAI,CACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,297 @@
1
+ /**
2
+ * `domains` capability — register domain names and manage their DNS. Check what's
3
+ * available and its price, buy a domain for a year, renew it, list and inspect the
4
+ * domains you own, and start a transfer out. A nested `dns` group creates, reads,
5
+ * updates, and deletes DNS records on a domain you own.
6
+ *
7
+ * import { domains } from "@sapiom/tools"; // ambient auth
8
+ *
9
+ * const [candidate] = await domains.check({ domainNames: ["my-app.dev"] });
10
+ * if (candidate.available) {
11
+ * await domains.register({ domainName: "my-app.dev" }); // charges apply
12
+ * await domains.dns.create({
13
+ * domainName: "my-app.dev",
14
+ * type: "A",
15
+ * host: "", // "" = the root domain
16
+ * value: "203.0.113.10",
17
+ * });
18
+ * }
19
+ *
20
+ * Or via an explicit client: `createClient({ apiKey }).domains.register(...)`.
21
+ *
22
+ * Operations are grouped:
23
+ * - top-level — check / register / renew / list / get / transferOut
24
+ * - `dns` — create / list / get / update / delete DNS records
25
+ *
26
+ * `register` and `renew` charge on success. Failed requests throw
27
+ * {@link DomainsHttpError} (carries `status` + parsed `body`).
28
+ */
29
+ import { Transport } from "../_client/index.js";
30
+ import { DomainsHttpError } from "./errors.js";
31
+ export { DomainsHttpError };
32
+ /** A DNS record type. */
33
+ export type DnsRecordType = "A" | "AAAA" | "ANAME" | "CNAME" | "MX" | "TXT" | "SRV" | "NS";
34
+ export interface CheckInput {
35
+ /** Domain names to check (1–50), e.g. `["my-app.dev", "my-app.io"]`. */
36
+ domainNames: string[];
37
+ }
38
+ /** Availability and pricing for a single domain name. */
39
+ export interface DomainAvailability {
40
+ /** The domain name that was checked. */
41
+ domainName: string;
42
+ /** Whether the domain is available to register. */
43
+ available: boolean;
44
+ /** First-year price as a decimal string (e.g. "12.99"), when available. */
45
+ purchasePrice?: string;
46
+ /** Yearly renewal price as a decimal string, when available. */
47
+ renewalPrice?: string;
48
+ /** Whether this is a premium (higher-priced) domain. */
49
+ premium?: boolean;
50
+ }
51
+ export interface DomainNameInput {
52
+ /** The domain name, e.g. "my-app.dev". */
53
+ domainName: string;
54
+ }
55
+ /** A domain. Which fields are populated depends on the call (see each method). */
56
+ export interface Domain {
57
+ /** The domain name. */
58
+ domainName: string;
59
+ /** Lifecycle status (e.g. "active", "transferring_out"). */
60
+ status?: string;
61
+ /** ISO-8601 timestamp when the registration expires. */
62
+ expiresAt?: string;
63
+ /** ISO-8601 timestamp when the domain was registered. */
64
+ registeredAt?: string;
65
+ /** First-year price paid, as a decimal string. */
66
+ purchasePrice?: string;
67
+ /** Yearly renewal price, as a decimal string. */
68
+ renewalPrice?: string;
69
+ /** The nameservers set on the domain. */
70
+ nameservers?: string[];
71
+ /** Whether the domain is registrar-locked against transfers. */
72
+ locked?: boolean;
73
+ /** Whether this is a premium domain. */
74
+ premium?: boolean;
75
+ /** The top-level domain (e.g. "dev", "com"). */
76
+ tld?: string;
77
+ /** ISO-8601 timestamp from which the domain becomes eligible to transfer out, or `null` if already eligible. */
78
+ transferEligibleAt?: string | null;
79
+ }
80
+ /** The result of starting a transfer out — includes the auth code for the new registrar. */
81
+ export interface DomainTransfer {
82
+ /** The domain name being transferred. */
83
+ domainName: string;
84
+ /** Authorization code to give the receiving registrar to complete the transfer. */
85
+ authCode?: string;
86
+ /** Human-readable instructions for completing the transfer. */
87
+ transferInstructions?: string;
88
+ }
89
+ export interface CreateDnsRecordInput {
90
+ /** The domain to add the record to. */
91
+ domainName: string;
92
+ /** Record type. */
93
+ type: DnsRecordType;
94
+ /** Host — `""` for the root domain (@), or a subdomain like "www" or "api". */
95
+ host: string;
96
+ /** Record value — an IP for A/AAAA, a hostname for CNAME/MX, text for TXT, etc. */
97
+ value: string;
98
+ /** Time-to-live in seconds (minimum 300; defaults to 300). */
99
+ ttl?: number;
100
+ /** Priority — required for MX, optional for others. */
101
+ priority?: number;
102
+ }
103
+ export interface UpdateDnsRecordInput {
104
+ /** The domain the record belongs to. */
105
+ domainName: string;
106
+ /** The record to update. */
107
+ recordId: string;
108
+ /** New record type. */
109
+ type?: DnsRecordType;
110
+ /** New host. */
111
+ host?: string;
112
+ /** New value. */
113
+ value?: string;
114
+ /** New TTL in seconds (minimum 300). */
115
+ ttl?: number;
116
+ /** New priority. */
117
+ priority?: number;
118
+ }
119
+ export interface DnsRecordRef {
120
+ /** The domain the record belongs to. */
121
+ domainName: string;
122
+ /** The record identifier. */
123
+ recordId: string;
124
+ }
125
+ /** A DNS record on a domain you own. */
126
+ export interface DnsRecord {
127
+ /** The record identifier — pass to `dns.get` / `dns.update` / `dns.delete`. */
128
+ recordId: string;
129
+ /** The domain the record belongs to. */
130
+ domainName: string;
131
+ /** Record type. */
132
+ type: DnsRecordType;
133
+ /** Host — `""` for the root domain. */
134
+ host: string;
135
+ /** Fully-qualified name of the record (host + domain). */
136
+ fqdn?: string;
137
+ /** Record value. */
138
+ value: string;
139
+ /** Time-to-live in seconds. */
140
+ ttl: number;
141
+ /** Priority, when set (MX/SRV). */
142
+ priority?: number;
143
+ /** ISO-8601 timestamp when the record was created. */
144
+ createdAt?: string;
145
+ }
146
+ /**
147
+ * Check whether one or more domain names are available and get their price. Free.
148
+ * Use this first, in a workflow step that turns an idea into candidate names,
149
+ * before deciding what to `register`.
150
+ *
151
+ * @param input - `{ domainNames }` — 1 to 50 names to check.
152
+ * @returns One availability result per name (with pricing when available).
153
+ * @throws {DomainsHttpError} on a non-2xx response.
154
+ *
155
+ * @example
156
+ * const results = await domains.check({ domainNames: ["my-app.dev", "my-app.io"] });
157
+ * const buyable = results.filter((r) => r.available);
158
+ */
159
+ export declare function check(input: CheckInput, transport?: Transport, baseUrl?: string): Promise<DomainAvailability[]>;
160
+ /**
161
+ * Register (buy) a domain for one year. Charges apply on success and the purchase
162
+ * is not reversible. Use in a workflow step to acquire a brand's domain before
163
+ * configuring DNS or email for it; confirm availability and price with `check`
164
+ * first.
165
+ *
166
+ * @param input - `{ domainName }` — the domain to register.
167
+ * @returns The newly registered domain.
168
+ * @throws {DomainsHttpError} on a non-2xx response (e.g. already registered, or a price change).
169
+ *
170
+ * @example
171
+ * const domain = await domains.register({ domainName: "my-app.dev" });
172
+ */
173
+ export declare function register(input: DomainNameInput, transport?: Transport, baseUrl?: string): Promise<Domain>;
174
+ /**
175
+ * Renew a domain you own for one more year. Charges apply on success. Use in a
176
+ * workflow step that keeps a domain from expiring; read the renewal price from
177
+ * `get` first if you want to check it.
178
+ *
179
+ * @param input - `{ domainName }` — the domain to renew.
180
+ * @returns The domain with its updated expiry.
181
+ * @throws {DomainsHttpError} on a non-2xx response (e.g. not owned, or a price change).
182
+ *
183
+ * @example
184
+ * const domain = await domains.renew({ domainName: "my-app.dev" });
185
+ */
186
+ export declare function renew(input: DomainNameInput, transport?: Transport, baseUrl?: string): Promise<Domain>;
187
+ /**
188
+ * List the domains you own. Free. Use in a workflow step to discover or iterate
189
+ * over the domains available to configure.
190
+ *
191
+ * @returns Your domains, each with status, expiry, and renewal price.
192
+ * @throws {DomainsHttpError} on a non-2xx response.
193
+ *
194
+ * @example
195
+ * const owned = await domains.list();
196
+ */
197
+ export declare function list(transport?: Transport, baseUrl?: string): Promise<Domain[]>;
198
+ /**
199
+ * Get full details for a domain you own — nameservers, lock status, renewal price,
200
+ * and transfer eligibility. Free. Use in a workflow step before changing DNS or
201
+ * starting a transfer, when you need the domain's current state.
202
+ *
203
+ * @param input - `{ domainName }` — the domain to look up.
204
+ * @returns The domain's details.
205
+ * @throws {DomainsHttpError} on a non-2xx response (e.g. not owned).
206
+ *
207
+ * @example
208
+ * const detail = await domains.get({ domainName: "my-app.dev" });
209
+ */
210
+ export declare function get(input: DomainNameInput, transport?: Transport, baseUrl?: string): Promise<Domain>;
211
+ /**
212
+ * Start transferring a domain you own out to another registrar. Returns an auth
213
+ * code to hand the receiving registrar. Disruptive — this unlocks the domain and
214
+ * begins the transfer; use in a workflow step only when you intend to move the
215
+ * domain away.
216
+ *
217
+ * @param input - `{ domainName }` — the domain to transfer out.
218
+ * @returns The auth code and transfer instructions.
219
+ * @throws {DomainsHttpError} on a non-2xx response (e.g. not owned, or still transfer-locked).
220
+ *
221
+ * @example
222
+ * const { authCode } = await domains.transferOut({ domainName: "my-app.dev" });
223
+ */
224
+ export declare function transferOut(input: DomainNameInput, transport?: Transport, baseUrl?: string): Promise<DomainTransfer>;
225
+ /**
226
+ * Create a DNS record on a domain you own. Free. Use in a workflow step to point a
227
+ * domain at a host (A/AAAA/CNAME), route its email (MX), or add verification text
228
+ * (TXT). Use `host: ""` for the root domain, or a subdomain like "www".
229
+ *
230
+ * @param input - `{ domainName, type, host, value, ttl?, priority? }`.
231
+ * @returns The created record (with its `recordId`).
232
+ * @throws {DomainsHttpError} on a non-2xx response.
233
+ *
234
+ * @example
235
+ * const record = await domains.dns.create({
236
+ * domainName: "my-app.dev",
237
+ * type: "A",
238
+ * host: "",
239
+ * value: "203.0.113.10",
240
+ * });
241
+ */
242
+ export declare function createDnsRecord(input: CreateDnsRecordInput, transport?: Transport, baseUrl?: string): Promise<DnsRecord>;
243
+ /**
244
+ * List the DNS records on a domain you own. Free. Use in a workflow step to read
245
+ * the current records (e.g. to find a `recordId` to update or delete).
246
+ *
247
+ * @param input - `{ domainName }` — the domain whose records to list.
248
+ * @returns The domain's DNS records.
249
+ * @throws {DomainsHttpError} on a non-2xx response.
250
+ *
251
+ * @example
252
+ * const records = await domains.dns.list({ domainName: "my-app.dev" });
253
+ */
254
+ export declare function listDnsRecords(input: DomainNameInput, transport?: Transport, baseUrl?: string): Promise<DnsRecord[]>;
255
+ /**
256
+ * Get a single DNS record on a domain you own. Free. Use in a workflow step when
257
+ * you have a `recordId` and need the record's current values.
258
+ *
259
+ * @param input - `{ domainName, recordId }`.
260
+ * @returns The DNS record.
261
+ * @throws {DomainsHttpError} on a non-2xx response (e.g. record not found).
262
+ *
263
+ * @example
264
+ * const record = await domains.dns.get({ domainName: "my-app.dev", recordId });
265
+ */
266
+ export declare function getDnsRecord(input: DnsRecordRef, transport?: Transport, baseUrl?: string): Promise<DnsRecord>;
267
+ /**
268
+ * Update a DNS record on a domain you own. Free. Provide only the fields you want
269
+ * to change. Use in a workflow step to repoint a record (e.g. change an A record's
270
+ * IP) without recreating it.
271
+ *
272
+ * @param input - `{ domainName, recordId, type?, host?, value?, ttl?, priority? }`.
273
+ * @returns The updated record.
274
+ * @throws {DomainsHttpError} on a non-2xx response.
275
+ *
276
+ * @example
277
+ * const updated = await domains.dns.update({
278
+ * domainName: "my-app.dev",
279
+ * recordId,
280
+ * value: "198.51.100.7",
281
+ * });
282
+ */
283
+ export declare function updateDnsRecord(input: UpdateDnsRecordInput, transport?: Transport, baseUrl?: string): Promise<DnsRecord>;
284
+ /**
285
+ * Delete a DNS record from a domain you own. Free. Use in a workflow step to
286
+ * remove a record you no longer need.
287
+ *
288
+ * @param input - `{ domainName, recordId }`.
289
+ * @returns Nothing.
290
+ * @throws {DomainsHttpError} on a non-2xx response.
291
+ *
292
+ * @example
293
+ * await domains.dns.delete({ domainName: "my-app.dev", recordId });
294
+ */
295
+ declare function deleteDnsRecord(input: DnsRecordRef, transport?: Transport, baseUrl?: string): Promise<void>;
296
+ export { deleteDnsRecord };
297
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/domains/index.ts"],"names":[],"mappings":"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"}