@pawabase/client 0.0.0-stage → 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 +313 -2
- package/dist/cjs/admin.d.ts +187 -0
- package/dist/cjs/admin.d.ts.map +1 -0
- package/dist/cjs/admin.js +235 -0
- package/dist/cjs/admin.js.map +1 -0
- package/dist/cjs/auth.d.ts +448 -0
- package/dist/cjs/auth.d.ts.map +1 -0
- package/dist/cjs/auth.js +1016 -0
- package/dist/cjs/auth.js.map +1 -0
- package/dist/cjs/client.d.ts +103 -0
- package/dist/cjs/client.d.ts.map +1 -0
- package/dist/cjs/client.js +144 -0
- package/dist/cjs/client.js.map +1 -0
- package/dist/cjs/data.d.ts +220 -0
- package/dist/cjs/data.d.ts.map +1 -0
- package/dist/cjs/data.js +490 -0
- package/dist/cjs/data.js.map +1 -0
- package/dist/cjs/errors.d.ts +167 -0
- package/dist/cjs/errors.d.ts.map +1 -0
- package/dist/cjs/errors.js +316 -0
- package/dist/cjs/errors.js.map +1 -0
- package/dist/cjs/files.d.ts +80 -0
- package/dist/cjs/files.d.ts.map +1 -0
- package/dist/cjs/files.js +167 -0
- package/dist/cjs/files.js.map +1 -0
- package/dist/cjs/functions.d.ts +66 -0
- package/dist/cjs/functions.d.ts.map +1 -0
- package/dist/cjs/functions.js +109 -0
- package/dist/cjs/functions.js.map +1 -0
- package/dist/cjs/http.d.ts +101 -0
- package/dist/cjs/http.d.ts.map +1 -0
- package/dist/cjs/http.js +249 -0
- package/dist/cjs/http.js.map +1 -0
- package/dist/cjs/index.d.ts +22 -0
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/index.js +45 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/manage/access.d.ts +136 -0
- package/dist/cjs/manage/access.d.ts.map +1 -0
- package/dist/cjs/manage/access.js +162 -0
- package/dist/cjs/manage/access.js.map +1 -0
- package/dist/cjs/manage/automation.d.ts +106 -0
- package/dist/cjs/manage/automation.d.ts.map +1 -0
- package/dist/cjs/manage/automation.js +144 -0
- package/dist/cjs/manage/automation.js.map +1 -0
- package/dist/cjs/manage/base.d.ts +52 -0
- package/dist/cjs/manage/base.d.ts.map +1 -0
- package/dist/cjs/manage/base.js +69 -0
- package/dist/cjs/manage/base.js.map +1 -0
- package/dist/cjs/manage/data.d.ts +100 -0
- package/dist/cjs/manage/data.d.ts.map +1 -0
- package/dist/cjs/manage/data.js +141 -0
- package/dist/cjs/manage/data.js.map +1 -0
- package/dist/cjs/manage/files.d.ts +45 -0
- package/dist/cjs/manage/files.d.ts.map +1 -0
- package/dist/cjs/manage/files.js +73 -0
- package/dist/cjs/manage/files.js.map +1 -0
- package/dist/cjs/manage/functions.d.ts +48 -0
- package/dist/cjs/manage/functions.d.ts.map +1 -0
- package/dist/cjs/manage/functions.js +61 -0
- package/dist/cjs/manage/functions.js.map +1 -0
- package/dist/cjs/manage/index.d.ts +76 -0
- package/dist/cjs/manage/index.d.ts.map +1 -0
- package/dist/cjs/manage/index.js +134 -0
- package/dist/cjs/manage/index.js.map +1 -0
- package/dist/cjs/manage/lifecycle.d.ts +128 -0
- package/dist/cjs/manage/lifecycle.d.ts.map +1 -0
- package/dist/cjs/manage/lifecycle.js +167 -0
- package/dist/cjs/manage/lifecycle.js.map +1 -0
- package/dist/cjs/manage/mail.d.ts +16 -0
- package/dist/cjs/manage/mail.d.ts.map +1 -0
- package/dist/cjs/manage/mail.js +24 -0
- package/dist/cjs/manage/mail.js.map +1 -0
- package/dist/cjs/manage/observe.d.ts +149 -0
- package/dist/cjs/manage/observe.d.ts.map +1 -0
- package/dist/cjs/manage/observe.js +168 -0
- package/dist/cjs/manage/observe.js.map +1 -0
- package/dist/cjs/manage/realtime.d.ts +52 -0
- package/dist/cjs/manage/realtime.d.ts.map +1 -0
- package/dist/cjs/manage/realtime.js +71 -0
- package/dist/cjs/manage/realtime.js.map +1 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/realtime.d.ts +207 -0
- package/dist/cjs/realtime.d.ts.map +1 -0
- package/dist/cjs/realtime.js +704 -0
- package/dist/cjs/realtime.js.map +1 -0
- package/dist/cjs/session-store.d.ts +16 -0
- package/dist/cjs/session-store.d.ts.map +1 -0
- package/dist/cjs/session-store.js +37 -0
- package/dist/cjs/session-store.js.map +1 -0
- package/dist/cjs/typegen.d.ts +26 -0
- package/dist/cjs/typegen.d.ts.map +1 -0
- package/dist/cjs/typegen.js +167 -0
- package/dist/cjs/typegen.js.map +1 -0
- package/dist/cjs/types.d.ts +178 -0
- package/dist/cjs/types.d.ts.map +1 -0
- package/dist/cjs/types.js +4 -0
- package/dist/cjs/types.js.map +1 -0
- package/dist/cjs/util.d.ts +27 -0
- package/dist/cjs/util.d.ts.map +1 -0
- package/dist/cjs/util.js +115 -0
- package/dist/cjs/util.js.map +1 -0
- package/dist/cjs/version.d.ts +2 -0
- package/dist/cjs/version.d.ts.map +1 -0
- package/dist/cjs/version.js +5 -0
- package/dist/cjs/version.js.map +1 -0
- package/dist/esm/admin.d.ts +187 -0
- package/dist/esm/admin.d.ts.map +1 -0
- package/dist/esm/admin.js +222 -0
- package/dist/esm/admin.js.map +1 -0
- package/dist/esm/auth.d.ts +448 -0
- package/dist/esm/auth.d.ts.map +1 -0
- package/dist/esm/auth.js +1012 -0
- package/dist/esm/auth.js.map +1 -0
- package/dist/esm/cli/gen-types.d.ts +2 -0
- package/dist/esm/cli/gen-types.d.ts.map +1 -0
- package/dist/esm/cli/gen-types.js +100 -0
- package/dist/esm/cli/gen-types.js.map +1 -0
- package/dist/esm/client.d.ts +103 -0
- package/dist/esm/client.d.ts.map +1 -0
- package/dist/esm/client.js +139 -0
- package/dist/esm/client.js.map +1 -0
- package/dist/esm/data.d.ts +220 -0
- package/dist/esm/data.d.ts.map +1 -0
- package/dist/esm/data.js +485 -0
- package/dist/esm/data.js.map +1 -0
- package/dist/esm/errors.d.ts +167 -0
- package/dist/esm/errors.d.ts.map +1 -0
- package/dist/esm/errors.js +293 -0
- package/dist/esm/errors.js.map +1 -0
- package/dist/esm/files.d.ts +80 -0
- package/dist/esm/files.d.ts.map +1 -0
- package/dist/esm/files.js +162 -0
- package/dist/esm/files.js.map +1 -0
- package/dist/esm/functions.d.ts +66 -0
- package/dist/esm/functions.d.ts.map +1 -0
- package/dist/esm/functions.js +103 -0
- package/dist/esm/functions.js.map +1 -0
- package/dist/esm/http.d.ts +101 -0
- package/dist/esm/http.d.ts.map +1 -0
- package/dist/esm/http.js +245 -0
- package/dist/esm/http.js.map +1 -0
- package/dist/esm/index.d.ts +22 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/manage/access.d.ts +136 -0
- package/dist/esm/manage/access.d.ts.map +1 -0
- package/dist/esm/manage/access.js +155 -0
- package/dist/esm/manage/access.js.map +1 -0
- package/dist/esm/manage/automation.d.ts +106 -0
- package/dist/esm/manage/automation.d.ts.map +1 -0
- package/dist/esm/manage/automation.js +134 -0
- package/dist/esm/manage/automation.js.map +1 -0
- package/dist/esm/manage/base.d.ts +52 -0
- package/dist/esm/manage/base.d.ts.map +1 -0
- package/dist/esm/manage/base.js +63 -0
- package/dist/esm/manage/base.js.map +1 -0
- package/dist/esm/manage/data.d.ts +100 -0
- package/dist/esm/manage/data.d.ts.map +1 -0
- package/dist/esm/manage/data.js +130 -0
- package/dist/esm/manage/data.js.map +1 -0
- package/dist/esm/manage/files.d.ts +45 -0
- package/dist/esm/manage/files.d.ts.map +1 -0
- package/dist/esm/manage/files.js +68 -0
- package/dist/esm/manage/files.js.map +1 -0
- package/dist/esm/manage/functions.d.ts +48 -0
- package/dist/esm/manage/functions.d.ts.map +1 -0
- package/dist/esm/manage/functions.js +57 -0
- package/dist/esm/manage/functions.js.map +1 -0
- package/dist/esm/manage/index.d.ts +76 -0
- package/dist/esm/manage/index.d.ts.map +1 -0
- package/dist/esm/manage/index.js +115 -0
- package/dist/esm/manage/index.js.map +1 -0
- package/dist/esm/manage/lifecycle.d.ts +128 -0
- package/dist/esm/manage/lifecycle.d.ts.map +1 -0
- package/dist/esm/manage/lifecycle.js +161 -0
- package/dist/esm/manage/lifecycle.js.map +1 -0
- package/dist/esm/manage/mail.d.ts +16 -0
- package/dist/esm/manage/mail.d.ts.map +1 -0
- package/dist/esm/manage/mail.js +19 -0
- package/dist/esm/manage/mail.js.map +1 -0
- package/dist/esm/manage/observe.d.ts +149 -0
- package/dist/esm/manage/observe.d.ts.map +1 -0
- package/dist/esm/manage/observe.js +161 -0
- package/dist/esm/manage/observe.js.map +1 -0
- package/dist/esm/manage/realtime.d.ts +52 -0
- package/dist/esm/manage/realtime.d.ts.map +1 -0
- package/dist/esm/manage/realtime.js +66 -0
- package/dist/esm/manage/realtime.js.map +1 -0
- package/dist/esm/package.json +1 -0
- package/dist/esm/realtime.d.ts +207 -0
- package/dist/esm/realtime.d.ts.map +1 -0
- package/dist/esm/realtime.js +699 -0
- package/dist/esm/realtime.js.map +1 -0
- package/dist/esm/session-store.d.ts +16 -0
- package/dist/esm/session-store.d.ts.map +1 -0
- package/dist/esm/session-store.js +32 -0
- package/dist/esm/session-store.js.map +1 -0
- package/dist/esm/typegen.d.ts +26 -0
- package/dist/esm/typegen.d.ts.map +1 -0
- package/dist/esm/typegen.js +163 -0
- package/dist/esm/typegen.js.map +1 -0
- package/dist/esm/types.d.ts +178 -0
- package/dist/esm/types.d.ts.map +1 -0
- package/dist/esm/types.js +3 -0
- package/dist/esm/types.js.map +1 -0
- package/dist/esm/util.d.ts +27 -0
- package/dist/esm/util.d.ts.map +1 -0
- package/dist/esm/util.js +102 -0
- package/dist/esm/util.js.map +1 -0
- package/dist/esm/version.d.ts +2 -0
- package/dist/esm/version.d.ts.map +1 -0
- package/dist/esm/version.js +2 -0
- package/dist/esm/version.js.map +1 -0
- package/package.json +84 -4
- package/src/admin.ts +311 -0
- package/src/auth.ts +1180 -0
- package/src/cli/gen-types.ts +105 -0
- package/src/client.ts +189 -0
- package/src/data.ts +576 -0
- package/src/errors.ts +330 -0
- package/src/files.ts +208 -0
- package/src/functions.ts +131 -0
- package/src/http.ts +354 -0
- package/src/index.ts +56 -0
- package/src/manage/access.ts +206 -0
- package/src/manage/automation.ts +162 -0
- package/src/manage/base.ts +83 -0
- package/src/manage/data.ts +159 -0
- package/src/manage/files.ts +79 -0
- package/src/manage/functions.ts +69 -0
- package/src/manage/index.ts +132 -0
- package/src/manage/lifecycle.ts +208 -0
- package/src/manage/mail.ts +22 -0
- package/src/manage/observe.ts +226 -0
- package/src/manage/realtime.ts +95 -0
- package/src/realtime.ts +765 -0
- package/src/session-store.ts +36 -0
- package/src/typegen.ts +192 -0
- package/src/types.ts +195 -0
- package/src/util.ts +114 -0
- package/src/version.ts +1 -0
package/dist/cjs/http.js
ADDED
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HttpClient = void 0;
|
|
4
|
+
const errors_js_1 = require("./errors.js");
|
|
5
|
+
const version_js_1 = require("./version.js");
|
|
6
|
+
const util_js_1 = require("./util.js");
|
|
7
|
+
const SAFE_METHODS = new Set(["GET", "HEAD", "OPTIONS", "PUT", "DELETE"]);
|
|
8
|
+
const RETRYABLE_STATUS = new Set([502, 503, 504]);
|
|
9
|
+
const DEFAULT_RETRY = {
|
|
10
|
+
retries: 2,
|
|
11
|
+
baseDelayMs: 300,
|
|
12
|
+
maxDelayMs: 8000,
|
|
13
|
+
maxRetryAfterMs: 30_000,
|
|
14
|
+
};
|
|
15
|
+
function isStream(body) {
|
|
16
|
+
return typeof ReadableStream !== "undefined" && body instanceof ReadableStream;
|
|
17
|
+
}
|
|
18
|
+
function isRawBody(body) {
|
|
19
|
+
return (typeof body === "string" ||
|
|
20
|
+
(typeof Blob !== "undefined" && body instanceof Blob) ||
|
|
21
|
+
(typeof FormData !== "undefined" && body instanceof FormData) ||
|
|
22
|
+
(typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) ||
|
|
23
|
+
body instanceof ArrayBuffer ||
|
|
24
|
+
ArrayBuffer.isView(body) ||
|
|
25
|
+
isStream(body));
|
|
26
|
+
}
|
|
27
|
+
class HttpClient {
|
|
28
|
+
config;
|
|
29
|
+
constructor(config) {
|
|
30
|
+
this.config = config;
|
|
31
|
+
}
|
|
32
|
+
url(path, query) {
|
|
33
|
+
const base = (0, util_js_1.trimSlash)(this.config.baseUrl);
|
|
34
|
+
return `${base}${path.startsWith("/") ? path : `/${path}`}${(0, util_js_1.queryString)(query)}`;
|
|
35
|
+
}
|
|
36
|
+
/** Make a request and return the parsed body (`undefined` for `204`). */
|
|
37
|
+
async request(options) {
|
|
38
|
+
const response = await this.send(options);
|
|
39
|
+
return (await this.read(response, options.parse ?? "json"));
|
|
40
|
+
}
|
|
41
|
+
/** Make a request and return the raw `Response`. Non-2xx answers throw. */
|
|
42
|
+
async send(options) {
|
|
43
|
+
const method = (options.method ?? "GET").toUpperCase();
|
|
44
|
+
const url = options.absoluteUrl ?? this.url(options.path, options.query);
|
|
45
|
+
const anonymous = options.absoluteUrl !== undefined;
|
|
46
|
+
const retry = this.retryPolicy(options.retry);
|
|
47
|
+
const body = options.body;
|
|
48
|
+
const replayable = !isStream(body);
|
|
49
|
+
const idempotent = options.idempotent === true || SAFE_METHODS.has(method);
|
|
50
|
+
let token = null;
|
|
51
|
+
if (anonymous)
|
|
52
|
+
token = null;
|
|
53
|
+
else if (options.accessToken !== undefined)
|
|
54
|
+
token = options.accessToken;
|
|
55
|
+
else if (options.auth !== "none" && this.config.tokens)
|
|
56
|
+
token = await this.config.tokens.getAccessToken();
|
|
57
|
+
let attempt = 0;
|
|
58
|
+
let refreshed = false;
|
|
59
|
+
for (;;) {
|
|
60
|
+
const info = { method, url, attempt };
|
|
61
|
+
const started = Date.now();
|
|
62
|
+
let response;
|
|
63
|
+
try {
|
|
64
|
+
response = await this.once(method, url, options, token, info, anonymous);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
const retriable = error instanceof errors_js_1.NetworkError || error instanceof errors_js_1.TimeoutError;
|
|
68
|
+
if (retriable && retry && idempotent && replayable && attempt < retry.retries) {
|
|
69
|
+
const delayMs = (0, util_js_1.backoff)(attempt, retry);
|
|
70
|
+
this.hook(() => this.config.hooks.onRetry?.({ ...info, reason: error.name, delayMs }));
|
|
71
|
+
await (0, util_js_1.sleep)(delayMs, options.signal);
|
|
72
|
+
attempt += 1;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
this.hook(() => this.config.hooks.onError?.(error, info));
|
|
76
|
+
throw error;
|
|
77
|
+
}
|
|
78
|
+
this.hook(() => this.config.hooks.onResponse?.({
|
|
79
|
+
...info,
|
|
80
|
+
status: response.status,
|
|
81
|
+
durationMs: Date.now() - started,
|
|
82
|
+
requestId: response.headers.get("x-request-id"),
|
|
83
|
+
}));
|
|
84
|
+
if (response.ok)
|
|
85
|
+
return response;
|
|
86
|
+
if (options.throwOnError === false && !(response.status === 401 && token && !refreshed && this.config.tokens)) {
|
|
87
|
+
const retryable = response.status === 429 || (RETRYABLE_STATUS.has(response.status) && idempotent);
|
|
88
|
+
if (!retry || !retryable || attempt >= retry.retries)
|
|
89
|
+
return response;
|
|
90
|
+
}
|
|
91
|
+
// A rejected token: refresh once and replay, unless the body cannot be replayed.
|
|
92
|
+
if (response.status === 401 &&
|
|
93
|
+
token &&
|
|
94
|
+
!refreshed &&
|
|
95
|
+
replayable &&
|
|
96
|
+
options.auth !== "none" &&
|
|
97
|
+
options.accessToken === undefined &&
|
|
98
|
+
this.config.tokens) {
|
|
99
|
+
refreshed = true;
|
|
100
|
+
const fresh = await this.config.tokens.onUnauthorized(token);
|
|
101
|
+
if (fresh && fresh !== token) {
|
|
102
|
+
await this.discard(response);
|
|
103
|
+
token = fresh;
|
|
104
|
+
continue;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
const error = await this.toError(response, method, url);
|
|
108
|
+
const delayMs = this.retryDelay(error, response, attempt, retry, idempotent, replayable);
|
|
109
|
+
if (delayMs !== null && retry) {
|
|
110
|
+
this.hook(() => this.config.hooks.onRetry?.({ ...info, reason: `status ${response.status}`, delayMs }));
|
|
111
|
+
await (0, util_js_1.sleep)(delayMs, options.signal);
|
|
112
|
+
attempt += 1;
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
this.hook(() => this.config.hooks.onError?.(error, info));
|
|
116
|
+
throw error;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
retryPolicy(override) {
|
|
120
|
+
const chosen = override === undefined ? this.config.retry : override;
|
|
121
|
+
if (chosen === false)
|
|
122
|
+
return null;
|
|
123
|
+
const merged = { ...DEFAULT_RETRY, ...(this.config.retry === false ? {} : this.config.retry), ...chosen };
|
|
124
|
+
return merged.retries > 0 ? merged : null;
|
|
125
|
+
}
|
|
126
|
+
retryDelay(error, response, attempt, retry, idempotent, replayable) {
|
|
127
|
+
if (!retry || !replayable || attempt >= retry.retries)
|
|
128
|
+
return null;
|
|
129
|
+
const status = response.status;
|
|
130
|
+
// 429 is answered before a handler runs, so repeating any method is safe.
|
|
131
|
+
const retryable = status === 429 || (RETRYABLE_STATUS.has(status) && idempotent);
|
|
132
|
+
if (!retryable)
|
|
133
|
+
return null;
|
|
134
|
+
const asked = (0, errors_js_1.parseRetryAfter)(response.headers.get("retry-after")) ?? error.retryAfter;
|
|
135
|
+
if (asked !== null && asked !== undefined) {
|
|
136
|
+
const ms = asked * 1000;
|
|
137
|
+
return ms > retry.maxRetryAfterMs ? null : Math.ceil(ms);
|
|
138
|
+
}
|
|
139
|
+
return (0, util_js_1.backoff)(attempt, retry);
|
|
140
|
+
}
|
|
141
|
+
async once(method, url, options, token, info, anonymous) {
|
|
142
|
+
const headers = {
|
|
143
|
+
accept: "application/json",
|
|
144
|
+
...(anonymous ? {} : { apikey: this.config.apiKey, "x-client-info": `pawabase-js/${version_js_1.VERSION}`, ...this.config.headers }),
|
|
145
|
+
...options.headers,
|
|
146
|
+
};
|
|
147
|
+
if (token)
|
|
148
|
+
headers["authorization"] = `Bearer ${token}`;
|
|
149
|
+
let body;
|
|
150
|
+
const raw = options.body;
|
|
151
|
+
if (raw !== undefined && raw !== null) {
|
|
152
|
+
if (isRawBody(raw)) {
|
|
153
|
+
body = raw;
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
body = JSON.stringify(raw);
|
|
157
|
+
if (!Object.keys(headers).some((name) => name.toLowerCase() === "content-type")) {
|
|
158
|
+
headers["content-type"] = "application/json";
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
this.hook(() => this.config.hooks.onRequest?.({
|
|
163
|
+
...info,
|
|
164
|
+
headers: { ...headers, ...(headers["apikey"] ? { apikey: "***" } : {}), ...(headers["authorization"] ? { authorization: "Bearer ***" } : {}) },
|
|
165
|
+
}));
|
|
166
|
+
const timeoutMs = options.timeoutMs ?? this.config.timeoutMs;
|
|
167
|
+
const timeoutController = new AbortController();
|
|
168
|
+
const timer = timeoutMs > 0 ? setTimeout(() => timeoutController.abort(new errors_js_1.TimeoutError(timeoutMs)), timeoutMs) : null;
|
|
169
|
+
const signal = (0, util_js_1.anySignal)([options.signal, timeoutMs > 0 ? timeoutController.signal : undefined]);
|
|
170
|
+
const init = { method, headers, ...(signal ? { signal } : {}) };
|
|
171
|
+
if (body !== undefined) {
|
|
172
|
+
init.body = body;
|
|
173
|
+
if (isStream(body))
|
|
174
|
+
init.duplex = "half";
|
|
175
|
+
}
|
|
176
|
+
try {
|
|
177
|
+
return await this.config.fetch(url, init);
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
if (options.signal?.aborted)
|
|
181
|
+
throw new errors_js_1.AbortError(undefined, { cause: error });
|
|
182
|
+
if (timeoutController.signal.aborted)
|
|
183
|
+
throw new errors_js_1.TimeoutError(timeoutMs, { cause: error });
|
|
184
|
+
throw new errors_js_1.NetworkError(`Could not reach ${new URL(url).origin}: ${error?.message ?? error}`, {
|
|
185
|
+
cause: error,
|
|
186
|
+
method,
|
|
187
|
+
url,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
finally {
|
|
191
|
+
if (timer)
|
|
192
|
+
clearTimeout(timer);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
async toError(response, method, url) {
|
|
196
|
+
let body;
|
|
197
|
+
const text = await response.text().catch(() => "");
|
|
198
|
+
if (text) {
|
|
199
|
+
try {
|
|
200
|
+
body = JSON.parse(text);
|
|
201
|
+
}
|
|
202
|
+
catch {
|
|
203
|
+
body = text;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
return (0, errors_js_1.errorFromResponse)({ status: response.status, body, headers: response.headers, method, url });
|
|
207
|
+
}
|
|
208
|
+
async discard(response) {
|
|
209
|
+
try {
|
|
210
|
+
await response.arrayBuffer();
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
/* the body is not needed */
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async read(response, as) {
|
|
217
|
+
if (as === "response")
|
|
218
|
+
return response;
|
|
219
|
+
if (as === "stream")
|
|
220
|
+
return response.body;
|
|
221
|
+
if (as === "blob")
|
|
222
|
+
return response.blob();
|
|
223
|
+
if (as === "arrayBuffer")
|
|
224
|
+
return response.arrayBuffer();
|
|
225
|
+
if (response.status === 204 || response.status === 205)
|
|
226
|
+
return undefined;
|
|
227
|
+
const text = await response.text();
|
|
228
|
+
if (!text)
|
|
229
|
+
return undefined;
|
|
230
|
+
if (as === "text")
|
|
231
|
+
return text;
|
|
232
|
+
try {
|
|
233
|
+
return JSON.parse(text);
|
|
234
|
+
}
|
|
235
|
+
catch {
|
|
236
|
+
return text;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
hook(fn) {
|
|
240
|
+
try {
|
|
241
|
+
fn();
|
|
242
|
+
}
|
|
243
|
+
catch {
|
|
244
|
+
/* hooks observe; they must not break requests */
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
exports.HttpClient = HttpClient;
|
|
249
|
+
//# sourceMappingURL=http.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/http.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export { PawabaseClient, createClient } from "./client.js";
|
|
2
|
+
export type { ClientOptions, DatabaseShape } from "./client.js";
|
|
3
|
+
export { AuthClient } from "./auth.js";
|
|
4
|
+
export type { AuthChangeEvent, AuthListener, AuthOptions, IssuedToken, Passkey, PasskeyChallenge, SignInResult, SignUpResult, UpdateUserInput, UrlSessionResult, } from "./auth.js";
|
|
5
|
+
export { MemoryStorage } from "./session-store.js";
|
|
6
|
+
export type { SessionStorage } from "./session-store.js";
|
|
7
|
+
export { QueryBuilder, ResourceClient } from "./data.js";
|
|
8
|
+
export type { AnyRow, Condition, CreateManyResult, FilterOp, IterateOptions, QueryOptions, ReadOptions, ResourceTypes, } from "./data.js";
|
|
9
|
+
export { FlowsClient, FunctionsClient, RoutesClient } from "./functions.js";
|
|
10
|
+
export type { CallOptions, RouteOptions } from "./functions.js";
|
|
11
|
+
export { BucketClient, StorageClient } from "./files.js";
|
|
12
|
+
export type { TransferOptions, UploadBody, UploadOptions } from "./files.js";
|
|
13
|
+
export { RealtimeChannel, RealtimeClient } from "./realtime.js";
|
|
14
|
+
export type { ChannelEvents, ChannelOptions, PresenceChange, RealtimeOptions, RealtimeStatus, WebSocketConstructor, WebSocketLike, } from "./realtime.js";
|
|
15
|
+
export { HttpClient } from "./http.js";
|
|
16
|
+
export type { FetchLike, Hooks, RequestInfo, RequestOptions, ResponseInfo, RetryOptions, TokenProvider } from "./http.js";
|
|
17
|
+
export * from "./errors.js";
|
|
18
|
+
export type * from "./types.js";
|
|
19
|
+
export { VERSION } from "./version.js";
|
|
20
|
+
export { generateTypes } from "./typegen.js";
|
|
21
|
+
export type { TypegenOptions } from "./typegen.js";
|
|
22
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3D,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEhE,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EACV,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,OAAO,EACP,gBAAgB,EAChB,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,gBAAgB,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAEzD,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACzD,YAAY,EACV,MAAM,EACN,SAAS,EACT,gBAAgB,EAChB,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,WAAW,EACX,aAAa,GACd,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC5E,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEhE,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AACzD,YAAY,EAAE,eAAe,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE7E,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EACV,aAAa,EACb,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,oBAAoB,EACpB,aAAa,GACd,MAAM,eAAe,CAAC;AAEvB,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,YAAY,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1H,cAAc,aAAa,CAAC;AAC5B,mBAAmB,YAAY,CAAC;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAC7C,YAAY,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.generateTypes = exports.VERSION = exports.HttpClient = exports.RealtimeClient = exports.RealtimeChannel = exports.StorageClient = exports.BucketClient = exports.RoutesClient = exports.FunctionsClient = exports.FlowsClient = exports.ResourceClient = exports.QueryBuilder = exports.MemoryStorage = exports.AuthClient = exports.createClient = exports.PawabaseClient = void 0;
|
|
18
|
+
var client_js_1 = require("./client.js");
|
|
19
|
+
Object.defineProperty(exports, "PawabaseClient", { enumerable: true, get: function () { return client_js_1.PawabaseClient; } });
|
|
20
|
+
Object.defineProperty(exports, "createClient", { enumerable: true, get: function () { return client_js_1.createClient; } });
|
|
21
|
+
var auth_js_1 = require("./auth.js");
|
|
22
|
+
Object.defineProperty(exports, "AuthClient", { enumerable: true, get: function () { return auth_js_1.AuthClient; } });
|
|
23
|
+
var session_store_js_1 = require("./session-store.js");
|
|
24
|
+
Object.defineProperty(exports, "MemoryStorage", { enumerable: true, get: function () { return session_store_js_1.MemoryStorage; } });
|
|
25
|
+
var data_js_1 = require("./data.js");
|
|
26
|
+
Object.defineProperty(exports, "QueryBuilder", { enumerable: true, get: function () { return data_js_1.QueryBuilder; } });
|
|
27
|
+
Object.defineProperty(exports, "ResourceClient", { enumerable: true, get: function () { return data_js_1.ResourceClient; } });
|
|
28
|
+
var functions_js_1 = require("./functions.js");
|
|
29
|
+
Object.defineProperty(exports, "FlowsClient", { enumerable: true, get: function () { return functions_js_1.FlowsClient; } });
|
|
30
|
+
Object.defineProperty(exports, "FunctionsClient", { enumerable: true, get: function () { return functions_js_1.FunctionsClient; } });
|
|
31
|
+
Object.defineProperty(exports, "RoutesClient", { enumerable: true, get: function () { return functions_js_1.RoutesClient; } });
|
|
32
|
+
var files_js_1 = require("./files.js");
|
|
33
|
+
Object.defineProperty(exports, "BucketClient", { enumerable: true, get: function () { return files_js_1.BucketClient; } });
|
|
34
|
+
Object.defineProperty(exports, "StorageClient", { enumerable: true, get: function () { return files_js_1.StorageClient; } });
|
|
35
|
+
var realtime_js_1 = require("./realtime.js");
|
|
36
|
+
Object.defineProperty(exports, "RealtimeChannel", { enumerable: true, get: function () { return realtime_js_1.RealtimeChannel; } });
|
|
37
|
+
Object.defineProperty(exports, "RealtimeClient", { enumerable: true, get: function () { return realtime_js_1.RealtimeClient; } });
|
|
38
|
+
var http_js_1 = require("./http.js");
|
|
39
|
+
Object.defineProperty(exports, "HttpClient", { enumerable: true, get: function () { return http_js_1.HttpClient; } });
|
|
40
|
+
__exportStar(require("./errors.js"), exports);
|
|
41
|
+
var version_js_1 = require("./version.js");
|
|
42
|
+
Object.defineProperty(exports, "VERSION", { enumerable: true, get: function () { return version_js_1.VERSION; } });
|
|
43
|
+
var typegen_js_1 = require("./typegen.js");
|
|
44
|
+
Object.defineProperty(exports, "generateTypes", { enumerable: true, get: function () { return typegen_js_1.generateTypes; } });
|
|
45
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,yCAA2D;AAAlD,2GAAA,cAAc,OAAA;AAAE,yGAAA,YAAY,OAAA;AAGrC,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAanB,uDAAmD;AAA1C,iHAAA,aAAa,OAAA;AAGtB,qCAAyD;AAAhD,uGAAA,YAAY,OAAA;AAAE,yGAAA,cAAc,OAAA;AAYrC,+CAA4E;AAAnE,2GAAA,WAAW,OAAA;AAAE,+GAAA,eAAe,OAAA;AAAE,4GAAA,YAAY,OAAA;AAGnD,uCAAyD;AAAhD,wGAAA,YAAY,OAAA;AAAE,yGAAA,aAAa,OAAA;AAGpC,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAWxC,qCAAuC;AAA9B,qGAAA,UAAU,OAAA;AAGnB,8CAA4B;AAE5B,2CAAuC;AAA9B,qGAAA,OAAO,OAAA;AAChB,2CAA6C;AAApC,2GAAA,aAAa,OAAA"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { Service, type Api, type Body } from "./base.js";
|
|
2
|
+
type When = Date | string;
|
|
3
|
+
/** The environment's API keys: publishable (`pb_pk_…`, safe in apps) and secret (`pb_sk_…`, servers only). */
|
|
4
|
+
export declare class Keys extends Service {
|
|
5
|
+
list(): Promise<Api>;
|
|
6
|
+
/** Every scope a key can hold, with what each allows (the choices for `create({ scopes })`). */
|
|
7
|
+
scopes(): Promise<Api>;
|
|
8
|
+
/**
|
|
9
|
+
* Make a key; the key itself is in the answer once. `scopes` limit what it may do (`resource:read`, `functions:invoke`…),
|
|
10
|
+
* `allowedIps` and `allowedRoutes` (`"GET /rest/v1/orders"`, `"/functions/v1/*"`) limit where and what it may call.
|
|
11
|
+
*/
|
|
12
|
+
create(name: string, options?: {
|
|
13
|
+
role?: "publishable" | "secret";
|
|
14
|
+
scopes?: string[];
|
|
15
|
+
expiresAt?: When;
|
|
16
|
+
allowedIps?: string[];
|
|
17
|
+
allowedRoutes?: string[];
|
|
18
|
+
}): Promise<Api>;
|
|
19
|
+
revoke(keyId: string): Promise<Api>;
|
|
20
|
+
/** Replace a key with a new one; the old keeps working for `graceHours` (24 by default) so clients can switch. */
|
|
21
|
+
rotate(keyId: string, options?: {
|
|
22
|
+
graceHours?: number;
|
|
23
|
+
}): Promise<Api>;
|
|
24
|
+
}
|
|
25
|
+
/** Secrets functions and flows read (`ctx.runtime.secret(name)`). Values are never returned. */
|
|
26
|
+
export declare class Secrets extends Service {
|
|
27
|
+
list(): Promise<Api>;
|
|
28
|
+
set(name: string, value: string, options?: {
|
|
29
|
+
description?: string;
|
|
30
|
+
rotateEveryDays?: number;
|
|
31
|
+
}): Promise<Api>;
|
|
32
|
+
/** Change the description or the rotation reminder (`0` clears it). */
|
|
33
|
+
update(name: string, options: {
|
|
34
|
+
description?: string;
|
|
35
|
+
rotateEveryDays?: number;
|
|
36
|
+
}): Promise<Api>;
|
|
37
|
+
/** Replace the value, keeping the old one for {@link rollback}. */
|
|
38
|
+
rotate(name: string, value?: string): Promise<Api>;
|
|
39
|
+
/** Put back the value a rotation replaced. */
|
|
40
|
+
rollback(name: string): Promise<Api>;
|
|
41
|
+
remove(name: string): Promise<Api>;
|
|
42
|
+
}
|
|
43
|
+
/** Custom domains the environment answers on, proved with a DNS record. */
|
|
44
|
+
export declare class Domains extends Service {
|
|
45
|
+
list(): Promise<Api>;
|
|
46
|
+
/** Register a hostname: the answer says which DNS record proves you own it. */
|
|
47
|
+
add(hostname: string): Promise<Api>;
|
|
48
|
+
/** Check the DNS record now. */
|
|
49
|
+
verify(domainId: string): Promise<Api>;
|
|
50
|
+
remove(domainId: string): Promise<Api>;
|
|
51
|
+
}
|
|
52
|
+
export interface FirewallCondition {
|
|
53
|
+
/** `ip`, `country`, `method`, `path`, `host`, `query`, `header:<name>`, `query:<name>`, `user_agent`, `origin`, `referer`, `role`, `key_id`, `content_length`. */
|
|
54
|
+
field: string;
|
|
55
|
+
op: string;
|
|
56
|
+
value: unknown;
|
|
57
|
+
}
|
|
58
|
+
export interface FirewallRule {
|
|
59
|
+
name: string;
|
|
60
|
+
action?: "allow" | "block" | "log" | "rate_limit";
|
|
61
|
+
conditions?: FirewallCondition[];
|
|
62
|
+
/** How `conditions` combine: `all` (default) or `any`. */
|
|
63
|
+
logic?: "all" | "any";
|
|
64
|
+
match?: Record<string, string[]>;
|
|
65
|
+
rateLimit?: {
|
|
66
|
+
requests: number;
|
|
67
|
+
window_seconds: number;
|
|
68
|
+
by?: string;
|
|
69
|
+
ban_seconds?: number;
|
|
70
|
+
};
|
|
71
|
+
/** `enforce` (default) or `simulate`, which only records what the rule would have done. */
|
|
72
|
+
mode?: "enforce" | "simulate";
|
|
73
|
+
enabled?: boolean;
|
|
74
|
+
expiresAt?: When;
|
|
75
|
+
note?: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* The firewall at the gateway: ordered rules (allow, block, log, rate limit), managed attack signatures, bans, and what it did.
|
|
79
|
+
*
|
|
80
|
+
* ```ts
|
|
81
|
+
* await m.firewall.addRule({ name: "Burst", action: "rate_limit",
|
|
82
|
+
* conditions: [{ field: "path", op: "starts_with", value: "/auth/v1/token" }],
|
|
83
|
+
* rateLimit: { requests: 10, window_seconds: 60, by: "ip", ban_seconds: 900 } });
|
|
84
|
+
* ```
|
|
85
|
+
*/
|
|
86
|
+
export declare class Firewall extends Service {
|
|
87
|
+
/** Rules in the order they are tried. */
|
|
88
|
+
rules(): Promise<Api>;
|
|
89
|
+
/** Add a rule at the end. */
|
|
90
|
+
addRule(rule: FirewallRule): Promise<Api>;
|
|
91
|
+
/** Change some fields of a rule, using the server's field names (`clear_expiry: true` removes an expiry). */
|
|
92
|
+
updateRule(ruleId: string, changes: Body): Promise<Api>;
|
|
93
|
+
removeRule(ruleId: string): Promise<Api>;
|
|
94
|
+
/** Set the order rules are tried in: every rule exactly once. */
|
|
95
|
+
order(ruleIds: string[]): Promise<Api>;
|
|
96
|
+
/** Managed rule sets (`sqli`, `xss`, `traversal`, `scanners`, `sensitive_files`, `no_user_agent`, `methods`) and automatic bans. */
|
|
97
|
+
config(): Promise<Api>;
|
|
98
|
+
/** `managed`: `{ sqli: "block", scanners: "log" }` (`off`, `log`, `block`). `autoBan`: `{ enabled, threshold, window_seconds, ban_seconds, statuses, exempt }`. */
|
|
99
|
+
setConfig(options: {
|
|
100
|
+
managed?: Record<string, string>;
|
|
101
|
+
autoBan?: Body;
|
|
102
|
+
}): Promise<Api>;
|
|
103
|
+
bans(options?: {
|
|
104
|
+
includeExpired?: boolean;
|
|
105
|
+
}): Promise<Api>;
|
|
106
|
+
/** Ban an address or CIDR range for `seconds` (`0`: until lifted). */
|
|
107
|
+
ban(ip: string, options?: {
|
|
108
|
+
seconds?: number;
|
|
109
|
+
reason?: string;
|
|
110
|
+
}): Promise<Api>;
|
|
111
|
+
liftBan(banId: string): Promise<Api>;
|
|
112
|
+
events(options?: {
|
|
113
|
+
action?: string;
|
|
114
|
+
source?: string;
|
|
115
|
+
ip?: string;
|
|
116
|
+
path?: string;
|
|
117
|
+
ruleId?: string;
|
|
118
|
+
limit?: number;
|
|
119
|
+
}): Promise<Api>;
|
|
120
|
+
/** Totals, a timeline, and the top addresses, paths, rules and countries. */
|
|
121
|
+
stats(options?: {
|
|
122
|
+
hours?: number;
|
|
123
|
+
}): Promise<Api>;
|
|
124
|
+
/** What the firewall would do with a request, step by step. Nothing is sent or counted. */
|
|
125
|
+
test(ip: string, options?: {
|
|
126
|
+
path?: string;
|
|
127
|
+
method?: string;
|
|
128
|
+
userAgent?: string;
|
|
129
|
+
query?: string;
|
|
130
|
+
headers?: Record<string, string>;
|
|
131
|
+
country?: string;
|
|
132
|
+
role?: string;
|
|
133
|
+
}): Promise<Api>;
|
|
134
|
+
}
|
|
135
|
+
export {};
|
|
136
|
+
//# sourceMappingURL=access.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"access.d.ts","sourceRoot":"","sources":["../../../src/manage/access.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Firewall = exports.Domains = exports.Secrets = exports.Keys = void 0;
|
|
4
|
+
const base_js_1 = require("./base.js");
|
|
5
|
+
const iso = (value) => (value instanceof Date ? value.toISOString() : value);
|
|
6
|
+
/** The environment's API keys: publishable (`pb_pk_…`, safe in apps) and secret (`pb_sk_…`, servers only). */
|
|
7
|
+
class Keys extends base_js_1.Service {
|
|
8
|
+
list() {
|
|
9
|
+
return this.get("/keys");
|
|
10
|
+
}
|
|
11
|
+
/** Every scope a key can hold, with what each allows (the choices for `create({ scopes })`). */
|
|
12
|
+
scopes() {
|
|
13
|
+
return this.project("GET", "/key-scopes");
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Make a key; the key itself is in the answer once. `scopes` limit what it may do (`resource:read`, `functions:invoke`…),
|
|
17
|
+
* `allowedIps` and `allowedRoutes` (`"GET /rest/v1/orders"`, `"/functions/v1/*"`) limit where and what it may call.
|
|
18
|
+
*/
|
|
19
|
+
create(name, options = {}) {
|
|
20
|
+
return this.post("/keys", {
|
|
21
|
+
name,
|
|
22
|
+
role: options.role ?? "publishable",
|
|
23
|
+
scopes: options.scopes ?? [],
|
|
24
|
+
expires_at: iso(options.expiresAt),
|
|
25
|
+
allowed_ips: options.allowedIps ?? [],
|
|
26
|
+
allowed_routes: options.allowedRoutes ?? [],
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
revoke(keyId) {
|
|
30
|
+
return this.post((0, base_js_1.seg)("keys", keyId, "revoke"));
|
|
31
|
+
}
|
|
32
|
+
/** Replace a key with a new one; the old keeps working for `graceHours` (24 by default) so clients can switch. */
|
|
33
|
+
rotate(keyId, options = {}) {
|
|
34
|
+
return this.post((0, base_js_1.seg)("keys", keyId, "rotate"), { grace_hours: options.graceHours ?? 24 });
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
exports.Keys = Keys;
|
|
38
|
+
/** Secrets functions and flows read (`ctx.runtime.secret(name)`). Values are never returned. */
|
|
39
|
+
class Secrets extends base_js_1.Service {
|
|
40
|
+
list() {
|
|
41
|
+
return this.get("/secrets");
|
|
42
|
+
}
|
|
43
|
+
set(name, value, options = {}) {
|
|
44
|
+
return this.put((0, base_js_1.seg)("secrets", name), { value, description: options.description ?? "", rotate_every_days: options.rotateEveryDays });
|
|
45
|
+
}
|
|
46
|
+
/** Change the description or the rotation reminder (`0` clears it). */
|
|
47
|
+
update(name, options) {
|
|
48
|
+
return this.patch((0, base_js_1.seg)("secrets", name), { description: options.description, rotate_every_days: options.rotateEveryDays });
|
|
49
|
+
}
|
|
50
|
+
/** Replace the value, keeping the old one for {@link rollback}. */
|
|
51
|
+
rotate(name, value) {
|
|
52
|
+
return this.post((0, base_js_1.seg)("secrets", name, "rotate"), value ? { value } : {});
|
|
53
|
+
}
|
|
54
|
+
/** Put back the value a rotation replaced. */
|
|
55
|
+
rollback(name) {
|
|
56
|
+
return this.post((0, base_js_1.seg)("secrets", name, "rollback"));
|
|
57
|
+
}
|
|
58
|
+
remove(name) {
|
|
59
|
+
return this.del((0, base_js_1.seg)("secrets", name));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
exports.Secrets = Secrets;
|
|
63
|
+
/** Custom domains the environment answers on, proved with a DNS record. */
|
|
64
|
+
class Domains extends base_js_1.Service {
|
|
65
|
+
list() {
|
|
66
|
+
return this.get("/domains");
|
|
67
|
+
}
|
|
68
|
+
/** Register a hostname: the answer says which DNS record proves you own it. */
|
|
69
|
+
add(hostname) {
|
|
70
|
+
return this.post("/domains", { hostname });
|
|
71
|
+
}
|
|
72
|
+
/** Check the DNS record now. */
|
|
73
|
+
verify(domainId) {
|
|
74
|
+
return this.post((0, base_js_1.seg)("domains", domainId, "verify"));
|
|
75
|
+
}
|
|
76
|
+
remove(domainId) {
|
|
77
|
+
return this.del((0, base_js_1.seg)("domains", domainId));
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
exports.Domains = Domains;
|
|
81
|
+
/**
|
|
82
|
+
* The firewall at the gateway: ordered rules (allow, block, log, rate limit), managed attack signatures, bans, and what it did.
|
|
83
|
+
*
|
|
84
|
+
* ```ts
|
|
85
|
+
* await m.firewall.addRule({ name: "Burst", action: "rate_limit",
|
|
86
|
+
* conditions: [{ field: "path", op: "starts_with", value: "/auth/v1/token" }],
|
|
87
|
+
* rateLimit: { requests: 10, window_seconds: 60, by: "ip", ban_seconds: 900 } });
|
|
88
|
+
* ```
|
|
89
|
+
*/
|
|
90
|
+
class Firewall extends base_js_1.Service {
|
|
91
|
+
/** Rules in the order they are tried. */
|
|
92
|
+
rules() {
|
|
93
|
+
return this.get("/firewall");
|
|
94
|
+
}
|
|
95
|
+
/** Add a rule at the end. */
|
|
96
|
+
addRule(rule) {
|
|
97
|
+
return this.post("/firewall", {
|
|
98
|
+
name: rule.name,
|
|
99
|
+
action: rule.action ?? "block",
|
|
100
|
+
conditions: rule.conditions ?? [],
|
|
101
|
+
logic: rule.logic ?? "all",
|
|
102
|
+
match: rule.match ?? {},
|
|
103
|
+
rate_limit: rule.rateLimit,
|
|
104
|
+
mode: rule.mode ?? "enforce",
|
|
105
|
+
enabled: rule.enabled ?? true,
|
|
106
|
+
expires_at: iso(rule.expiresAt),
|
|
107
|
+
note: rule.note ?? "",
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
/** Change some fields of a rule, using the server's field names (`clear_expiry: true` removes an expiry). */
|
|
111
|
+
updateRule(ruleId, changes) {
|
|
112
|
+
return this.patch((0, base_js_1.seg)("firewall", ruleId), changes);
|
|
113
|
+
}
|
|
114
|
+
removeRule(ruleId) {
|
|
115
|
+
return this.del((0, base_js_1.seg)("firewall", ruleId));
|
|
116
|
+
}
|
|
117
|
+
/** Set the order rules are tried in: every rule exactly once. */
|
|
118
|
+
order(ruleIds) {
|
|
119
|
+
return this.put("/firewall-order", { ids: ruleIds });
|
|
120
|
+
}
|
|
121
|
+
/** Managed rule sets (`sqli`, `xss`, `traversal`, `scanners`, `sensitive_files`, `no_user_agent`, `methods`) and automatic bans. */
|
|
122
|
+
config() {
|
|
123
|
+
return this.get("/firewall-config");
|
|
124
|
+
}
|
|
125
|
+
/** `managed`: `{ sqli: "block", scanners: "log" }` (`off`, `log`, `block`). `autoBan`: `{ enabled, threshold, window_seconds, ban_seconds, statuses, exempt }`. */
|
|
126
|
+
setConfig(options) {
|
|
127
|
+
return this.put("/firewall-config", { managed: options.managed, auto_ban: options.autoBan });
|
|
128
|
+
}
|
|
129
|
+
bans(options = {}) {
|
|
130
|
+
return this.get("/firewall-bans", { all: options.includeExpired ? 1 : undefined });
|
|
131
|
+
}
|
|
132
|
+
/** Ban an address or CIDR range for `seconds` (`0`: until lifted). */
|
|
133
|
+
ban(ip, options = {}) {
|
|
134
|
+
return this.post("/firewall-bans", { ip, seconds: options.seconds ?? 0, reason: options.reason ?? "" });
|
|
135
|
+
}
|
|
136
|
+
liftBan(banId) {
|
|
137
|
+
return this.del((0, base_js_1.seg)("firewall-bans", banId));
|
|
138
|
+
}
|
|
139
|
+
events(options = {}) {
|
|
140
|
+
const { ruleId, ...rest } = options;
|
|
141
|
+
return this.get("/firewall-events", { limit: 100, ...rest, rule_id: ruleId });
|
|
142
|
+
}
|
|
143
|
+
/** Totals, a timeline, and the top addresses, paths, rules and countries. */
|
|
144
|
+
stats(options = {}) {
|
|
145
|
+
return this.get("/firewall-stats", { hours: options.hours ?? 24 });
|
|
146
|
+
}
|
|
147
|
+
/** What the firewall would do with a request, step by step. Nothing is sent or counted. */
|
|
148
|
+
test(ip, options = {}) {
|
|
149
|
+
return this.post("/firewall-test", {
|
|
150
|
+
ip,
|
|
151
|
+
path: options.path ?? "/",
|
|
152
|
+
method: options.method ?? "GET",
|
|
153
|
+
user_agent: options.userAgent ?? "",
|
|
154
|
+
query: options.query ?? "",
|
|
155
|
+
headers: options.headers ?? {},
|
|
156
|
+
country: options.country ?? "",
|
|
157
|
+
role: options.role ?? "none",
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
exports.Firewall = Firewall;
|
|
162
|
+
//# sourceMappingURL=access.js.map
|