ts / dist / cjs / client.js
261 words
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createGatedClient = exports.createClient = exports.defaultSleep = void 0;
/**
 * The client is a frozen plain value: create one with `createClient` and
 * pass it as the first argument to the functions in the resource modules
 * (`domains`, `vps`, `jobs`, ...).
 *
 * Authentication is a single Bearer credential: either an API key created
 * in the account panel (`ird_...`) or an account JWT from the device login
 * flow — pass whichever as `apiKey`. A client without `apiKey` can call the
 * anonymous endpoints (domain check/example, device login).
 */
const config_js_1 = require("./config.js");
const gate_js_1 = require("./gate.js");
const defaultSleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
exports.defaultSleep = defaultSleep;
/** Create an ird API client. Synchronous; makes no requests. */
const createClient = (options = {}) => Object.freeze({
    apiKey: options.apiKey,
    apiUrl: (options.apiUrl?.trim() || config_js_1.API_BASE_URL).replace(/\/+$/, ''),
    headers: Object.freeze({ ...options.headers }),
    timeoutMs: options.timeoutMs,
    fetch: options.fetch ?? globalThis.fetch,
    sleep: options.sleep ?? exports.defaultSleep,
});
exports.createClient = createClient;
/**
 * Create a client with a domain gate: `deniedDomains` are names/patterns
 * (`"example.ro"`, `"*.example.ro"`) this client must never mutate, and
 * `allowedDomains`, when set, are the ONLY names it may mutate (an empty
 * list denies every domain mutation; deny wins over allow).
 *
 * Requires `apiKey`: the account's registrations are fetched up front to
 * map registration ids to domain names, so every domain-touching mutation
 * is checked client-side before any request is made. Violations throw a
 * `domainDenied` error. See `gate.ts`.
 */
const createGatedClient = async (options) => (0, gate_js_1.attachGate)((0, exports.createClient)(options), options);
exports.createGatedClient = createGatedClient;

static mirror of HEAD · about · clone: git clone https://ird.cod-sursa.ro/ts.git