mindoodb 0.0.44 → 0.0.46

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 (91) hide show
  1. package/README.md +9 -0
  2. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  3. package/dist/appendonlystores/network/HttpTransport.js +4 -0
  4. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  5. package/dist/browser/index.mjs +31 -0
  6. package/dist/core/BaseMindooDB.d.ts +74 -0
  7. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  8. package/dist/core/BaseMindooDB.js +160 -0
  9. package/dist/core/BaseMindooDB.js.map +1 -1
  10. package/dist/core/BaseMindooTenant.d.ts +22 -0
  11. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  12. package/dist/core/BaseMindooTenant.js +57 -6
  13. package/dist/core/BaseMindooTenant.js.map +1 -1
  14. package/dist/core/BaseMindooTenantFactory.d.ts.map +1 -1
  15. package/dist/core/BaseMindooTenantFactory.js +31 -9
  16. package/dist/core/BaseMindooTenantFactory.js.map +1 -1
  17. package/dist/core/copy/attachments.d.ts +53 -0
  18. package/dist/core/copy/attachments.d.ts.map +1 -0
  19. package/dist/core/copy/attachments.js +186 -0
  20. package/dist/core/copy/attachments.js.map +1 -0
  21. package/dist/core/copy/copyDocument.d.ts +86 -0
  22. package/dist/core/copy/copyDocument.d.ts.map +1 -0
  23. package/dist/core/copy/copyDocument.js +369 -0
  24. package/dist/core/copy/copyDocument.js.map +1 -0
  25. package/dist/core/copy/copyDocuments.d.ts +57 -0
  26. package/dist/core/copy/copyDocuments.d.ts.map +1 -0
  27. package/dist/core/copy/copyDocuments.js +167 -0
  28. package/dist/core/copy/copyDocuments.js.map +1 -0
  29. package/dist/core/copy/entryRewrite.d.ts +49 -0
  30. package/dist/core/copy/entryRewrite.d.ts.map +1 -0
  31. package/dist/core/copy/entryRewrite.js +74 -0
  32. package/dist/core/copy/entryRewrite.js.map +1 -0
  33. package/dist/core/copy/feasibility.d.ts +73 -0
  34. package/dist/core/copy/feasibility.d.ts.map +1 -0
  35. package/dist/core/copy/feasibility.js +169 -0
  36. package/dist/core/copy/feasibility.js.map +1 -0
  37. package/dist/core/copy/flatten.d.ts +55 -0
  38. package/dist/core/copy/flatten.d.ts.map +1 -0
  39. package/dist/core/copy/flatten.js +155 -0
  40. package/dist/core/copy/flatten.js.map +1 -0
  41. package/dist/core/copy/host.d.ts +92 -0
  42. package/dist/core/copy/host.d.ts.map +1 -0
  43. package/dist/core/copy/host.js +16 -0
  44. package/dist/core/copy/host.js.map +1 -0
  45. package/dist/core/copy/preflight.d.ts +62 -0
  46. package/dist/core/copy/preflight.d.ts.map +1 -0
  47. package/dist/core/copy/preflight.js +98 -0
  48. package/dist/core/copy/preflight.js.map +1 -0
  49. package/dist/core/copy/provenance.d.ts +74 -0
  50. package/dist/core/copy/provenance.d.ts.map +1 -0
  51. package/dist/core/copy/provenance.js +91 -0
  52. package/dist/core/copy/provenance.js.map +1 -0
  53. package/dist/core/copy/types.d.ts +418 -0
  54. package/dist/core/copy/types.d.ts.map +1 -0
  55. package/dist/core/copy/types.js +21 -0
  56. package/dist/core/copy/types.js.map +1 -0
  57. package/dist/core/crypto/DomainStatement.d.ts +44 -0
  58. package/dist/core/crypto/DomainStatement.d.ts.map +1 -0
  59. package/dist/core/crypto/DomainStatement.js +71 -0
  60. package/dist/core/crypto/DomainStatement.js.map +1 -0
  61. package/dist/core/crypto/EntrySignature.d.ts +109 -15
  62. package/dist/core/crypto/EntrySignature.d.ts.map +1 -1
  63. package/dist/core/crypto/EntrySignature.js +83 -22
  64. package/dist/core/crypto/EntrySignature.js.map +1 -1
  65. package/dist/core/index.d.ts +21 -0
  66. package/dist/core/index.d.ts.map +1 -1
  67. package/dist/core/index.js +54 -3
  68. package/dist/core/index.js.map +1 -1
  69. package/dist/core/timestamps/timestampClient.d.ts +88 -0
  70. package/dist/core/timestamps/timestampClient.d.ts.map +1 -0
  71. package/dist/core/timestamps/timestampClient.js +157 -0
  72. package/dist/core/timestamps/timestampClient.js.map +1 -0
  73. package/dist/core/types.d.ts +134 -4
  74. package/dist/core/types.d.ts.map +1 -1
  75. package/dist/core/types.js.map +1 -1
  76. package/dist/node/server/MindooDBServer.d.ts +37 -0
  77. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  78. package/dist/node/server/MindooDBServer.js +157 -0
  79. package/dist/node/server/MindooDBServer.js.map +1 -1
  80. package/dist/node/server/config.d.ts.map +1 -1
  81. package/dist/node/server/config.js +16 -0
  82. package/dist/node/server/config.js.map +1 -1
  83. package/dist/node/server/timestampProxy.d.ts +129 -0
  84. package/dist/node/server/timestampProxy.d.ts.map +1 -0
  85. package/dist/node/server/timestampProxy.js +361 -0
  86. package/dist/node/server/timestampProxy.js.map +1 -0
  87. package/dist/node/server/types.d.ts +20 -0
  88. package/dist/node/server/types.d.ts.map +1 -1
  89. package/dist/node/server/types.js +12 -0
  90. package/dist/node/server/types.js.map +1 -1
  91. package/package.json +1 -1
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ /**
3
+ * RFC 3161 timestamp proxy.
4
+ *
5
+ * Sealing a document (see the TeamSketchbook seal feature) needs a third-party
6
+ * attested time: the client hashes its own signature and asks a Time-Stamping
7
+ * Authority to sign that hash together with the TSA's clock reading.
8
+ *
9
+ * Most public TSAs cannot be called from a browser — they are http-only or send
10
+ * no CORS headers — so the server offers an authenticated proxy. It forwards
11
+ * opaque DER bytes and never parses them; the *client* verifies the returned
12
+ * token (messageImprint equality and chain to a trusted root), which is what
13
+ * makes a hostile or buggy proxy a denial-of-service risk rather than a forgery
14
+ * risk.
15
+ *
16
+ * SSRF is the hazard a forwarding endpoint always carries, so target URLs come
17
+ * only from server-side env config. A client may name a provider `id`; it can
18
+ * never supply a URL.
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.TimestampProxyError = exports.BUILT_IN_TSA_PROVIDERS = exports.DEFAULT_TIMESTAMP_TIMEOUT_MS = exports.MAX_TIMESTAMP_RESPONSE_BYTES = exports.MAX_TIMESTAMP_REQUEST_BYTES = exports.TIMESTAMP_REPLY_CONTENT_TYPE = exports.TIMESTAMP_QUERY_CONTENT_TYPE = void 0;
22
+ exports.parseTsaProviders = parseTsaProviders;
23
+ exports.toPublicTsaProviders = toPublicTsaProviders;
24
+ exports.requestTimestampToken = requestTimestampToken;
25
+ const urlSafety_js_1 = require("../../core/utils/urlSafety.js");
26
+ /** Content type mandated by RFC 3161 §3.4 for a request. */
27
+ exports.TIMESTAMP_QUERY_CONTENT_TYPE = "application/timestamp-query";
28
+ /** Content type mandated by RFC 3161 §3.4 for a response. */
29
+ exports.TIMESTAMP_REPLY_CONTENT_TYPE = "application/timestamp-reply";
30
+ /**
31
+ * A TimeStampReq is a hash plus a little ASN.1 framing — a few hundred bytes at
32
+ * most. Anything larger is either a bug or an attempt to use us as an upload
33
+ * relay.
34
+ */
35
+ exports.MAX_TIMESTAMP_REQUEST_BYTES = 8 * 1024;
36
+ /**
37
+ * A TimeStampResp carries the token and the TSA certificate chain. Real tokens
38
+ * run 2–8 KB; the cap bounds memory when an upstream misbehaves.
39
+ */
40
+ exports.MAX_TIMESTAMP_RESPONSE_BYTES = 128 * 1024;
41
+ /** Per-provider timeout. Failover to the next provider is preferable to waiting. */
42
+ exports.DEFAULT_TIMESTAMP_TIMEOUT_MS = 10000;
43
+ /**
44
+ * Providers a client can name by id without the operator writing a URL.
45
+ *
46
+ * Terms of use differ and are the operator's call, which is why nothing here is
47
+ * enabled by default:
48
+ * - `aimoda` and `opentsa` state that general production use is fine;
49
+ * - `freetsa` is a community service with no usage restriction;
50
+ * - the DigiCert/Sectigo endpoints are provided for their own certificate
51
+ * customers' code signing, so using them as general infrastructure is not
52
+ * clearly permitted — they are listed for completeness, not recommended.
53
+ */
54
+ exports.BUILT_IN_TSA_PROVIDERS = Object.freeze({
55
+ aimoda: {
56
+ id: "aimoda",
57
+ name: "ai.moda RFC 3161 proxy",
58
+ url: "https://rfc3161.ai.moda",
59
+ qualified: false,
60
+ rootInPublicTrustStores: true,
61
+ },
62
+ opentsa: {
63
+ id: "opentsa",
64
+ name: "Open TSA (open-tsa.eu)",
65
+ url: "https://tsr.open-tsa.eu",
66
+ qualified: false,
67
+ rootInPublicTrustStores: false,
68
+ },
69
+ freetsa: {
70
+ id: "freetsa",
71
+ name: "FreeTSA",
72
+ url: "https://freetsa.org/tsr",
73
+ qualified: false,
74
+ rootInPublicTrustStores: false,
75
+ },
76
+ digicert: {
77
+ id: "digicert",
78
+ name: "DigiCert",
79
+ url: "http://timestamp.digicert.com",
80
+ qualified: false,
81
+ rootInPublicTrustStores: true,
82
+ },
83
+ sectigo: {
84
+ id: "sectigo",
85
+ name: "Sectigo",
86
+ url: "http://timestamp.sectigo.com",
87
+ qualified: false,
88
+ rootInPublicTrustStores: true,
89
+ },
90
+ "sectigo-qualified": {
91
+ id: "sectigo-qualified",
92
+ name: "Sectigo Qualified",
93
+ url: "http://timestamp.sectigo.com/qualified",
94
+ qualified: true,
95
+ rootInPublicTrustStores: true,
96
+ },
97
+ });
98
+ /** Provider ids are used in URLs, filenames and manifests — keep them boring. */
99
+ const PROVIDER_ID_PATTERN = /^[a-z0-9][a-z0-9-]{0,31}$/;
100
+ /**
101
+ * Parse `MINDOODB_TSA_PROVIDERS`.
102
+ *
103
+ * Comma-separated entries, each either a built-in id (`aimoda`) or a custom
104
+ * `id=url` pair (`inhouse=https://tsa.corp.example/tsr`). A trailing `!` on an
105
+ * entry marks it qualified, and `+` marks its root as publicly trusted:
106
+ *
107
+ * MINDOODB_TSA_PROVIDERS="aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+"
108
+ *
109
+ * Unset or empty disables the proxy entirely. That is the safe default: a
110
+ * forwarding endpoint is outbound network access the operator should opt into,
111
+ * and Haven can still reach the browser-callable TSA directly without it.
112
+ */
113
+ function parseTsaProviders(raw, options = {}) {
114
+ const warn = options.warn ?? ((message) => console.warn(message));
115
+ const allowInsecure = options.allowInsecureUrls ?? false;
116
+ const entries = (raw ?? "")
117
+ .split(",")
118
+ .map((entry) => entry.trim())
119
+ .filter((entry) => entry.length > 0);
120
+ const providers = [];
121
+ const seen = new Set();
122
+ for (const entry of entries) {
123
+ let spec = entry;
124
+ let qualified = false;
125
+ let publiclyTrusted;
126
+ // Flags are suffixes so a URL containing them is still parsed correctly.
127
+ while (spec.endsWith("!") || spec.endsWith("+")) {
128
+ if (spec.endsWith("!"))
129
+ qualified = true;
130
+ else
131
+ publiclyTrusted = true;
132
+ spec = spec.slice(0, -1);
133
+ }
134
+ const eq = spec.indexOf("=");
135
+ const id = (eq === -1 ? spec : spec.slice(0, eq)).trim().toLowerCase();
136
+ const url = eq === -1 ? undefined : spec.slice(eq + 1).trim();
137
+ if (!PROVIDER_ID_PATTERN.test(id)) {
138
+ warn(`[timestampProxy] Ignoring TSA provider "${entry}": invalid id "${id}"`);
139
+ continue;
140
+ }
141
+ if (seen.has(id)) {
142
+ warn(`[timestampProxy] Ignoring duplicate TSA provider id "${id}"`);
143
+ continue;
144
+ }
145
+ let resolved;
146
+ if (url === undefined) {
147
+ const builtIn = exports.BUILT_IN_TSA_PROVIDERS[id];
148
+ if (!builtIn) {
149
+ warn(`[timestampProxy] Ignoring TSA provider "${id}": not a built-in id and no URL given (use "${id}=https://...")`);
150
+ continue;
151
+ }
152
+ resolved = { ...builtIn };
153
+ if (qualified)
154
+ resolved.qualified = true;
155
+ if (publiclyTrusted !== undefined)
156
+ resolved.rootInPublicTrustStores = publiclyTrusted;
157
+ }
158
+ else {
159
+ resolved = {
160
+ id,
161
+ name: id,
162
+ url,
163
+ qualified,
164
+ rootInPublicTrustStores: publiclyTrusted ?? false,
165
+ };
166
+ }
167
+ try {
168
+ // http is deliberately allowed: every eIDAS-qualified TSA we can use is
169
+ // http-only. The token is signed, so transport confidentiality only hides
170
+ // an opaque hash. Internal hosts stay blocked — that is the SSRF guard.
171
+ (0, urlSafety_js_1.assertSafeSyncUrl)(resolved.url, {
172
+ requireHttps: false,
173
+ allowPrivate: allowInsecure,
174
+ });
175
+ }
176
+ catch (error) {
177
+ const reason = error instanceof urlSafety_js_1.UnsafeUrlError ? error.message : String(error);
178
+ warn(`[timestampProxy] Ignoring TSA provider "${id}": ${reason}`);
179
+ continue;
180
+ }
181
+ seen.add(id);
182
+ providers.push(resolved);
183
+ }
184
+ return providers;
185
+ }
186
+ /** Drop the URL before a provider list is handed to a client. */
187
+ function toPublicTsaProviders(providers) {
188
+ return providers.map(({ url: _url, ...rest }) => ({ ...rest }));
189
+ }
190
+ class TimestampProxyError extends Error {
191
+ constructor(message, status,
192
+ /** Per-provider failures, for logging and for a client that wants to retry elsewhere. */
193
+ attempts = []) {
194
+ super(message);
195
+ this.status = status;
196
+ this.attempts = attempts;
197
+ this.name = "TimestampProxyError";
198
+ }
199
+ }
200
+ exports.TimestampProxyError = TimestampProxyError;
201
+ /**
202
+ * Read a response body with a hard byte cap.
203
+ *
204
+ * `response.arrayBuffer()` would buffer whatever the upstream sends; a TSA that
205
+ * answers with a gigabyte (hostile, or simply broken) must not be able to take
206
+ * the process down with it.
207
+ */
208
+ async function readCappedBody(response, maxBytes) {
209
+ const declared = response.headers.get("content-length");
210
+ if (declared) {
211
+ const declaredBytes = Number(declared);
212
+ if (Number.isFinite(declaredBytes) && declaredBytes > maxBytes) {
213
+ throw new Error(`response too large (${declaredBytes} bytes, max ${maxBytes})`);
214
+ }
215
+ }
216
+ const body = response.body;
217
+ if (!body) {
218
+ const buffer = new Uint8Array(await response.arrayBuffer());
219
+ if (buffer.byteLength > maxBytes) {
220
+ throw new Error(`response too large (${buffer.byteLength} bytes, max ${maxBytes})`);
221
+ }
222
+ return buffer;
223
+ }
224
+ const reader = body.getReader();
225
+ const chunks = [];
226
+ let total = 0;
227
+ try {
228
+ for (;;) {
229
+ const { done, value } = await reader.read();
230
+ if (done)
231
+ break;
232
+ if (!value)
233
+ continue;
234
+ total += value.byteLength;
235
+ if (total > maxBytes) {
236
+ throw new Error(`response too large (over ${maxBytes} bytes)`);
237
+ }
238
+ chunks.push(value);
239
+ }
240
+ }
241
+ finally {
242
+ reader.releaseLock();
243
+ // Abandoning a partially-read body leaks the socket otherwise.
244
+ void body.cancel().catch(() => undefined);
245
+ }
246
+ const out = new Uint8Array(total);
247
+ let offset = 0;
248
+ for (const chunk of chunks) {
249
+ out.set(chunk, offset);
250
+ offset += chunk.byteLength;
251
+ }
252
+ return out;
253
+ }
254
+ /** Reject an answer that is obviously not DER before it reaches the client. */
255
+ function assertLooksLikeTimestampResponse(bytes, contentType) {
256
+ if (bytes.byteLength < 2) {
257
+ throw new Error("empty response");
258
+ }
259
+ // Every TimeStampResp is a DER SEQUENCE.
260
+ if (bytes[0] !== 0x30) {
261
+ const hint = contentType ? ` (content-type "${contentType}")` : "";
262
+ throw new Error(`response is not DER${hint}`);
263
+ }
264
+ if (contentType) {
265
+ const normalized = contentType.split(";")[0].trim().toLowerCase();
266
+ // Some deployments answer `application/octet-stream`; only reject types that
267
+ // are certainly wrong, such as an HTML error page from a captive proxy.
268
+ if (normalized.startsWith("text/") || normalized === "application/json") {
269
+ throw new Error(`unexpected content-type "${normalized}"`);
270
+ }
271
+ }
272
+ }
273
+ /**
274
+ * POST the request to each provider in turn, returning the first DER answer.
275
+ *
276
+ * Failover is per-provider and the reason for each failure is preserved: an
277
+ * operator debugging "sealing stopped working" needs to see that provider A
278
+ * timed out and provider B answered 403, not a single opaque 502.
279
+ */
280
+ async function requestTimestampToken(options) {
281
+ const { providers, request, preferredProviderId, timeoutMs = exports.DEFAULT_TIMESTAMP_TIMEOUT_MS, maxResponseBytes = exports.MAX_TIMESTAMP_RESPONSE_BYTES, fetchImpl = fetch, } = options;
282
+ if (providers.length === 0) {
283
+ throw new TimestampProxyError("Timestamping is not enabled on this server", 503);
284
+ }
285
+ if (request.byteLength === 0) {
286
+ throw new TimestampProxyError("Empty timestamp request", 400);
287
+ }
288
+ if (request.byteLength > exports.MAX_TIMESTAMP_REQUEST_BYTES) {
289
+ throw new TimestampProxyError(`Timestamp request too large (${request.byteLength} bytes, max ${exports.MAX_TIMESTAMP_REQUEST_BYTES})`, 413);
290
+ }
291
+ if (request[0] !== 0x30) {
292
+ throw new TimestampProxyError("Timestamp request is not DER-encoded", 400);
293
+ }
294
+ let ordered = providers;
295
+ if (preferredProviderId) {
296
+ const preferred = providers.find((provider) => provider.id === preferredProviderId);
297
+ if (!preferred) {
298
+ throw new TimestampProxyError(`Unknown timestamp provider "${preferredProviderId}"`, 400);
299
+ }
300
+ ordered = [preferred, ...providers.filter((provider) => provider.id !== preferred.id)];
301
+ }
302
+ const attempts = [];
303
+ for (const provider of ordered) {
304
+ const startedAt = Date.now();
305
+ const controller = new AbortController();
306
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
307
+ try {
308
+ const response = await fetchImpl(provider.url, {
309
+ method: "POST",
310
+ headers: {
311
+ "content-type": exports.TIMESTAMP_QUERY_CONTENT_TYPE,
312
+ accept: exports.TIMESTAMP_REPLY_CONTENT_TYPE,
313
+ },
314
+ // A copy, because `fetch` may retain the buffer past this call.
315
+ body: request.slice().buffer,
316
+ // Following a redirect would let an upstream re-point us at an internal
317
+ // host, defeating the URL allowlist.
318
+ redirect: "error",
319
+ signal: controller.signal,
320
+ });
321
+ if (!response.ok) {
322
+ attempts.push({
323
+ providerId: provider.id,
324
+ ok: false,
325
+ httpStatus: response.status,
326
+ error: `HTTP ${response.status}`,
327
+ durationMs: Date.now() - startedAt,
328
+ });
329
+ continue;
330
+ }
331
+ const bytes = await readCappedBody(response, maxResponseBytes);
332
+ assertLooksLikeTimestampResponse(bytes, response.headers.get("content-type"));
333
+ attempts.push({
334
+ providerId: provider.id,
335
+ ok: true,
336
+ httpStatus: response.status,
337
+ durationMs: Date.now() - startedAt,
338
+ });
339
+ return {
340
+ providerId: provider.id,
341
+ providerName: provider.name,
342
+ response: bytes,
343
+ attempts,
344
+ };
345
+ }
346
+ catch (error) {
347
+ const aborted = error instanceof Error && error.name === "AbortError";
348
+ attempts.push({
349
+ providerId: provider.id,
350
+ ok: false,
351
+ error: aborted ? `timed out after ${timeoutMs}ms` : String(error instanceof Error ? error.message : error),
352
+ durationMs: Date.now() - startedAt,
353
+ });
354
+ }
355
+ finally {
356
+ clearTimeout(timer);
357
+ }
358
+ }
359
+ throw new TimestampProxyError("No timestamp provider could be reached", 502, attempts);
360
+ }
361
+ //# sourceMappingURL=timestampProxy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"timestampProxy.js","sourceRoot":"","sources":["../../../src/node/server/timestampProxy.ts"],"names":[],"mappings":"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"}
@@ -151,9 +151,17 @@ export interface RateLimitConfig {
151
151
  windowMs?: number;
152
152
  max?: number;
153
153
  }
154
+ /**
155
+ * Timestamp proxying additionally carries a daily cap, because the constrained
156
+ * resource is a third party's allowance rather than this server's CPU.
157
+ */
158
+ export interface TimestampRateLimitConfig extends RateLimitConfig {
159
+ dailyMax?: number;
160
+ }
154
161
  export interface ServerRateLimitsConfig {
155
162
  auth?: RateLimitConfig;
156
163
  sync?: RateLimitConfig;
164
+ timestamps?: TimestampRateLimitConfig;
157
165
  }
158
166
  /**
159
167
  * Server-level configuration loaded from config.json.
@@ -198,5 +206,17 @@ export declare const ENV_VARS: {
198
206
  * non-positive values fall back to {@link DEFAULT_MAX_SYNC_SERVER_DATABASES}.
199
207
  */
200
208
  readonly MAX_SYNC_SERVER_DATABASES: "MINDOODB_MAX_SYNC_SERVER_DATABASES";
209
+ /**
210
+ * Comma-separated RFC 3161 Time-Stamping Authorities the proxy at
211
+ * `POST /:tenantId/timestamps/rfc3161` may contact. Each entry is a built-in
212
+ * id (`aimoda`, `opentsa`, `freetsa`, ...) or a custom `id=url` pair; suffix
213
+ * `!` marks the provider qualified and `+` marks its root publicly trusted.
214
+ *
215
+ * Example: `aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+`
216
+ *
217
+ * Unset disables the proxy. Clients name a provider by id only — a URL from a
218
+ * client would turn the endpoint into an SSRF gadget.
219
+ */
220
+ readonly TSA_PROVIDERS: "MINDOODB_TSA_PROVIDERS";
201
221
  };
202
222
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D;;GAEG;AAEH;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAC;AAE5C;;;;;;;;GAQG;AACH,MAAM,WAAW,UAAU;IACzB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,gBAAgB,EAAE,MAAM,CAAC;IACzB,uDAAuD;IACvD,mBAAmB,EAAE,MAAM,CAAC;IAC5B,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sEAAsE;IACtE,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;GAGG;AACH,MAAM,WAAW,aAAc,SAAQ,kBAAkB;CAAG;AAE5D;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IACZ,wDAAwD;IACxD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;GAGG;AACH,MAAM,WAAW,uBAAwB,SAAQ,kBAAkB;IACjE,6EAA6E;IAC7E,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,SAAS,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,qBAAqB,EAAE,MAAM,CAAC;IAC9B,uEAAuE;IACvE,wBAAwB,EAAE,MAAM,CAAC;IAEjC,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,iDAAiD;IACjD,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAErD,oFAAoF;IACpF,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;IAErB,8DAA8D;IAC9D,aAAa,CAAC,EAAE,kBAAkB,EAAE,CAAC;CACtC;AAED;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,4DAA4D;IAC5D,QAAQ,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uCAAuC;IACvC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,wCAAwC;IACxC,wBAAwB,EAAE,MAAM,CAAC;IACjC,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iFAAiF;IACjF,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,2CAA2C;IAC3C,gBAAgB,CAAC,EAAE,SAAS,CAAC;IAC7B,yGAAyG;IACzG,KAAK,CAAC,EAAE,UAAU,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qCAAqC;IACpD,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,oCAAoC;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,kCAAkC;IAClC,MAAM,EAAE,YAAY,CAAC;CACtB;AAMD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,IAAI,CAAC,EAAE,eAAe,CAAC;CACxB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,oBAAoB,EAAE,CAAC,CAAC;IACrD,UAAU,CAAC,EAAE,sBAAsB,CAAC;CACrC;AAED;;GAEG;AACH,eAAO,MAAM,QAAQ;IACnB,8EAA8E;;IAE9E;;;;OAIG;;IAEH;;;;;OAKG;;IAEH;;;;OAIG;;IAEH;;;;OAIG;;CAEK,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":"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"}
@@ -32,5 +32,17 @@ exports.ENV_VARS = {
32
32
  * non-positive values fall back to {@link DEFAULT_MAX_SYNC_SERVER_DATABASES}.
33
33
  */
34
34
  MAX_SYNC_SERVER_DATABASES: "MINDOODB_MAX_SYNC_SERVER_DATABASES",
35
+ /**
36
+ * Comma-separated RFC 3161 Time-Stamping Authorities the proxy at
37
+ * `POST /:tenantId/timestamps/rfc3161` may contact. Each entry is a built-in
38
+ * id (`aimoda`, `opentsa`, `freetsa`, ...) or a custom `id=url` pair; suffix
39
+ * `!` marks the provider qualified and `+` marks its root publicly trusted.
40
+ *
41
+ * Example: `aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+`
42
+ *
43
+ * Unset disables the proxy. Clients name a provider by id only — a URL from a
44
+ * client would turn the endpoint into an SSRF gadget.
45
+ */
46
+ TSA_PROVIDERS: "MINDOODB_TSA_PROVIDERS",
35
47
  };
36
48
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":";;;AAiMA;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,8EAA8E;IAC9E,eAAe,EAAE,0BAA0B;IAC3C;;;;OAIG;IACH,oBAAoB,EAAE,+BAA+B;IACrD;;;;;OAKG;IACH,iBAAiB,EAAE,4BAA4B;IAC/C;;;;OAIG;IACH,wBAAwB,EAAE,mCAAmC;IAC7D;;;;OAIG;IACH,yBAAyB,EAAE,oCAAoC;CACvD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/node/server/types.ts"],"names":[],"mappings":";;;AA0MA;;GAEG;AACU,QAAA,QAAQ,GAAG;IACtB,8EAA8E;IAC9E,eAAe,EAAE,0BAA0B;IAC3C;;;;OAIG;IACH,oBAAoB,EAAE,+BAA+B;IACrD;;;;;OAKG;IACH,iBAAiB,EAAE,4BAA4B;IAC/C;;;;OAIG;IACH,wBAAwB,EAAE,mCAAmC;IAC7D;;;;OAIG;IACH,yBAAyB,EAAE,oCAAoC;IAC/D;;;;;;;;;;OAUG;IACH,aAAa,EAAE,wBAAwB;CAC/B,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindoodb",
3
- "version": "0.0.44",
3
+ "version": "0.0.46",
4
4
  "engines": {
5
5
  "node": ">=22.13.0"
6
6
  },