mindoodb 0.0.84 → 0.0.86
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-server.md +1 -0
- package/README.md +6 -4
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +15 -0
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +75 -1
- package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts +9 -1
- package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
- package/dist/appendonlystores/network/HttpTransport.js +38 -10
- package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
- package/dist/cloudflare/DurableObjectSql.d.ts +56 -0
- package/dist/cloudflare/DurableObjectSql.d.ts.map +1 -0
- package/dist/cloudflare/DurableObjectSql.js +180 -0
- package/dist/cloudflare/DurableObjectSql.js.map +1 -0
- package/dist/cloudflare/MindooDatabaseObject.d.ts +86 -0
- package/dist/cloudflare/MindooDatabaseObject.d.ts.map +1 -0
- package/dist/cloudflare/MindooDatabaseObject.js +614 -0
- package/dist/cloudflare/MindooDatabaseObject.js.map +1 -0
- package/dist/cloudflare/MindooServerObject.d.ts +63 -0
- package/dist/cloudflare/MindooServerObject.d.ts.map +1 -0
- package/dist/cloudflare/MindooServerObject.js +521 -0
- package/dist/cloudflare/MindooServerObject.js.map +1 -0
- package/dist/cloudflare/WorkersCryptoAdapter.d.ts +7 -0
- package/dist/cloudflare/WorkersCryptoAdapter.d.ts.map +1 -0
- package/dist/cloudflare/WorkersCryptoAdapter.js +14 -0
- package/dist/cloudflare/WorkersCryptoAdapter.js.map +1 -0
- package/dist/cloudflare/host.d.ts +49 -0
- package/dist/cloudflare/host.d.ts.map +1 -0
- package/dist/cloudflare/host.js +104 -0
- package/dist/cloudflare/host.js.map +1 -0
- package/dist/cloudflare/http.d.ts +91 -0
- package/dist/cloudflare/http.d.ts.map +1 -0
- package/dist/cloudflare/http.js +266 -0
- package/dist/cloudflare/http.js.map +1 -0
- package/dist/cloudflare/index.d.ts +12 -0
- package/dist/cloudflare/index.d.ts.map +1 -0
- package/dist/cloudflare/index.js +20 -0
- package/dist/cloudflare/index.js.map +1 -0
- package/dist/cloudflare/storeRpc.d.ts +22 -0
- package/dist/cloudflare/storeRpc.d.ts.map +1 -0
- package/dist/cloudflare/storeRpc.js +85 -0
- package/dist/cloudflare/storeRpc.js.map +1 -0
- package/dist/cloudflare/types.d.ts +101 -0
- package/dist/cloudflare/types.d.ts.map +1 -0
- package/dist/cloudflare/types.js +10 -0
- package/dist/cloudflare/types.js.map +1 -0
- package/dist/cloudflare/worker.d.ts +25 -0
- package/dist/cloudflare/worker.d.ts.map +1 -0
- package/dist/cloudflare/worker.js +170 -0
- package/dist/cloudflare/worker.js.map +1 -0
- package/dist/core/BaseMindooDB.d.ts +43 -1
- package/dist/core/BaseMindooDB.d.ts.map +1 -1
- package/dist/core/BaseMindooDB.js +209 -87
- package/dist/core/BaseMindooDB.js.map +1 -1
- package/dist/core/BaseMindooTenant.d.ts +14 -0
- package/dist/core/BaseMindooTenant.d.ts.map +1 -1
- package/dist/core/BaseMindooTenant.js +46 -0
- package/dist/core/BaseMindooTenant.js.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.d.ts +10 -0
- package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
- package/dist/core/BaseMindooTenantDirectory.js +79 -8
- package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
- package/dist/core/ChangeDocDraft.d.ts +133 -0
- package/dist/core/ChangeDocDraft.d.ts.map +1 -0
- package/dist/core/ChangeDocDraft.js +492 -0
- package/dist/core/ChangeDocDraft.js.map +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +1 -0
- package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts +8 -0
- package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/AuthenticationService.js +19 -0
- package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/IrohStreamIO.js +3 -23
- package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts +7 -1
- package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.d.ts +23 -0
- package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
- package/dist/core/appendonlystores/network/types.js.map +1 -1
- package/dist/core/appendonlystores/rpc/storeRpcCodec.d.ts.map +1 -1
- package/dist/core/appendonlystores/rpc/storeRpcCodec.js +3 -23
- package/dist/core/appendonlystores/rpc/storeRpcCodec.js.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js +21 -30
- package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts +37 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts.map +1 -1
- package/dist/core/appendonlystores/sqlite/SqliteDriver.js +99 -40
- package/dist/core/appendonlystores/sqlite/SqliteDriver.js.map +1 -1
- package/dist/core/appendonlystores/syncStores.d.ts.map +1 -1
- package/dist/core/appendonlystores/syncStores.js +253 -168
- package/dist/core/appendonlystores/syncStores.js.map +1 -1
- package/dist/core/appendonlystores/types.d.ts +8 -0
- package/dist/core/appendonlystores/types.d.ts.map +1 -1
- package/dist/core/appendonlystores/types.js.map +1 -1
- package/dist/core/expressions/evaluateExpression.d.ts +8 -0
- package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
- package/dist/core/expressions/evaluateExpression.js +29 -4
- package/dist/core/expressions/evaluateExpression.js.map +1 -1
- package/dist/core/expressions/metadata.js +4 -4
- package/dist/core/expressions/metadata.js.map +1 -1
- package/dist/core/types.d.ts +61 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/core/uri/MindooURI.d.ts.map +1 -1
- package/dist/core/uri/MindooURI.js +3 -24
- package/dist/core/uri/MindooURI.js.map +1 -1
- package/dist/core/utils/base64.d.ts +17 -0
- package/dist/core/utils/base64.d.ts.map +1 -0
- package/dist/core/utils/base64.js +54 -0
- package/dist/core/utils/base64.js.map +1 -0
- package/dist/core/utils/idGeneration.d.ts.map +1 -1
- package/dist/core/utils/idGeneration.js +14 -3
- package/dist/core/utils/idGeneration.js.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -1
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1 -0
- package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -1
- package/dist/node/server/FsServerDataStore.d.ts +23 -0
- package/dist/node/server/FsServerDataStore.d.ts.map +1 -0
- package/dist/node/server/FsServerDataStore.js +59 -0
- package/dist/node/server/FsServerDataStore.js.map +1 -0
- package/dist/node/server/IrohServerEndpoint.d.ts +1 -1
- package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.d.ts +5 -5
- package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
- package/dist/node/server/IrohServerRpc.js +1 -1
- package/dist/node/server/IrohServerRpc.js.map +1 -1
- package/dist/node/server/MindooDBServer.d.ts +29 -150
- package/dist/node/server/MindooDBServer.d.ts.map +1 -1
- package/dist/node/server/MindooDBServer.js +160 -1568
- package/dist/node/server/MindooDBServer.js.map +1 -1
- package/dist/node/server/PurgedDocRegistry.d.ts +4 -27
- package/dist/node/server/PurgedDocRegistry.d.ts.map +1 -1
- package/dist/node/server/PurgedDocRegistry.js +6 -83
- package/dist/node/server/PurgedDocRegistry.js.map +1 -1
- package/dist/node/server/StoreFactory.d.ts +1 -1
- package/dist/node/server/StoreFactory.d.ts.map +1 -1
- package/dist/node/server/TenantManager.d.ts +16 -284
- package/dist/node/server/TenantManager.d.ts.map +1 -1
- package/dist/node/server/TenantManager.js +35 -1168
- package/dist/node/server/TenantManager.js.map +1 -1
- package/dist/node/server/add-to-network.js +1 -1
- package/dist/node/server/add-to-network.js.map +1 -1
- package/dist/node/server/compressionMiddleware.d.ts +14 -0
- package/dist/node/server/compressionMiddleware.d.ts.map +1 -1
- package/dist/node/server/compressionMiddleware.js +46 -3
- package/dist/node/server/compressionMiddleware.js.map +1 -1
- package/dist/node/server/config.d.ts +11 -15
- package/dist/node/server/config.d.ts.map +1 -1
- package/dist/node/server/config.js +30 -245
- package/dist/node/server/config.js.map +1 -1
- package/dist/node/server/expressAdapter.d.ts +23 -0
- package/dist/node/server/expressAdapter.d.ts.map +1 -0
- package/dist/node/server/expressAdapter.js +108 -0
- package/dist/node/server/expressAdapter.js.map +1 -0
- package/dist/node/server/nativeIrohStreamIO.d.ts +1 -1
- package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -1
- package/dist/node/server/peer/FileClusterAuditStorage.d.ts +16 -0
- package/dist/node/server/peer/FileClusterAuditStorage.d.ts.map +1 -0
- package/dist/node/server/peer/FileClusterAuditStorage.js +39 -0
- package/dist/node/server/peer/FileClusterAuditStorage.js.map +1 -0
- package/dist/node/server/peer/IrohPeerLink.d.ts +1 -1
- package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -1
- package/dist/node/server/peer/routes.d.ts +10 -44
- package/dist/node/server/peer/routes.d.ts.map +1 -1
- package/dist/node/server/peer/routes.js +33 -275
- package/dist/node/server/peer/routes.js.map +1 -1
- package/dist/node/server/resolveServerPassword.js +1 -1
- package/dist/node/server/resolveServerPassword.js.map +1 -1
- package/dist/node/server/server.js +1 -1
- package/dist/node/server/server.js.map +1 -1
- package/dist/node/server/serverinit.js +1 -1
- package/dist/node/server/serverinit.js.map +1 -1
- package/dist/server/CapabilityMatcher.d.ts +60 -0
- package/dist/server/CapabilityMatcher.d.ts.map +1 -0
- package/dist/server/CapabilityMatcher.js +138 -0
- package/dist/server/CapabilityMatcher.js.map +1 -0
- package/dist/server/DeviceDiscoveryService.d.ts +36 -0
- package/dist/server/DeviceDiscoveryService.d.ts.map +1 -0
- package/dist/server/DeviceDiscoveryService.js +165 -0
- package/dist/server/DeviceDiscoveryService.js.map +1 -0
- package/dist/server/PurgedDocRegistry.d.ts +35 -0
- package/dist/server/PurgedDocRegistry.d.ts.map +1 -0
- package/dist/server/PurgedDocRegistry.js +90 -0
- package/dist/server/PurgedDocRegistry.js.map +1 -0
- package/dist/server/ServerDataStore.d.ts +67 -0
- package/dist/server/ServerDataStore.d.ts.map +1 -0
- package/dist/server/ServerDataStore.js +88 -0
- package/dist/server/ServerDataStore.js.map +1 -0
- package/dist/server/SyncEventBus.d.ts +39 -0
- package/dist/server/SyncEventBus.d.ts.map +1 -0
- package/dist/server/SyncEventBus.js +41 -0
- package/dist/server/SyncEventBus.js.map +1 -0
- package/dist/server/SystemAdminAuth.d.ts +82 -0
- package/dist/server/SystemAdminAuth.d.ts.map +1 -0
- package/dist/server/SystemAdminAuth.js +228 -0
- package/dist/server/SystemAdminAuth.js.map +1 -0
- package/dist/server/TenantManager.d.ts +330 -0
- package/dist/server/TenantManager.d.ts.map +1 -0
- package/dist/server/TenantManager.js +1186 -0
- package/dist/server/TenantManager.js.map +1 -0
- package/dist/server/http/MindooDBServerCore.d.ts +313 -0
- package/dist/server/http/MindooDBServerCore.d.ts.map +1 -0
- package/dist/server/http/MindooDBServerCore.js +1403 -0
- package/dist/server/http/MindooDBServerCore.js.map +1 -0
- package/dist/server/http/types.d.ts +89 -0
- package/dist/server/http/types.d.ts.map +1 -0
- package/dist/server/http/types.js +29 -0
- package/dist/server/http/types.js.map +1 -0
- package/dist/server/index.d.ts +32 -0
- package/dist/server/index.d.ts.map +1 -0
- package/dist/server/index.js +76 -0
- package/dist/server/index.js.map +1 -0
- package/dist/server/peer/ClusterAuditLog.d.ts +71 -0
- package/dist/server/peer/ClusterAuditLog.d.ts.map +1 -0
- package/dist/server/peer/ClusterAuditLog.js +81 -0
- package/dist/server/peer/ClusterAuditLog.js.map +1 -0
- package/dist/server/peer/ClusterJobRunner.d.ts +43 -0
- package/dist/server/peer/ClusterJobRunner.d.ts.map +1 -0
- package/dist/server/peer/ClusterJobRunner.js +119 -0
- package/dist/server/peer/ClusterJobRunner.js.map +1 -0
- package/dist/server/peer/ClusterManager.d.ts +149 -0
- package/dist/server/peer/ClusterManager.d.ts.map +1 -0
- package/dist/server/peer/ClusterManager.js +292 -0
- package/dist/server/peer/ClusterManager.js.map +1 -0
- package/dist/server/peer/PeerAuthService.d.ts +69 -0
- package/dist/server/peer/PeerAuthService.d.ts.map +1 -0
- package/dist/server/peer/PeerAuthService.js +208 -0
- package/dist/server/peer/PeerAuthService.js.map +1 -0
- package/dist/server/peer/PeerReplicator.d.ts +303 -0
- package/dist/server/peer/PeerReplicator.d.ts.map +1 -0
- package/dist/server/peer/PeerReplicator.js +1071 -0
- package/dist/server/peer/PeerReplicator.js.map +1 -0
- package/dist/server/peer/clusterHttp.d.ts +113 -0
- package/dist/server/peer/clusterHttp.d.ts.map +1 -0
- package/dist/server/peer/clusterHttp.js +290 -0
- package/dist/server/peer/clusterHttp.js.map +1 -0
- package/dist/server/peer/types.d.ts +244 -0
- package/dist/server/peer/types.d.ts.map +1 -0
- package/dist/server/peer/types.js +189 -0
- package/dist/server/peer/types.js.map +1 -0
- package/dist/server/rateLimits.d.ts +119 -0
- package/dist/server/rateLimits.d.ts.map +1 -0
- package/dist/server/rateLimits.js +159 -0
- package/dist/server/rateLimits.js.map +1 -0
- package/dist/server/serverConfig.d.ts +37 -0
- package/dist/server/serverConfig.d.ts.map +1 -0
- package/dist/server/serverConfig.js +251 -0
- package/dist/server/serverConfig.js.map +1 -0
- package/dist/server/timestampProxy.d.ts +129 -0
- package/dist/server/timestampProxy.d.ts.map +1 -0
- package/dist/server/timestampProxy.js +361 -0
- package/dist/server/timestampProxy.js.map +1 -0
- package/dist/server/types.d.ts +267 -0
- package/dist/server/types.d.ts.map +1 -0
- package/dist/server/types.js +56 -0
- package/dist/server/types.js.map +1 -0
- package/dist/server/validation.d.ts +43 -0
- package/dist/server/validation.d.ts.map +1 -0
- package/dist/server/validation.js +104 -0
- package/dist/server/validation.js.map +1 -0
- package/package.json +9 -1
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ENV_VARS = exports.DEFAULT_SERVER_IROH_CONFIG = void 0;
|
|
4
|
+
/** Written into new `config.json` files. `--update` does not rewrite existing files. */
|
|
5
|
+
exports.DEFAULT_SERVER_IROH_CONFIG = {
|
|
6
|
+
enabled: false,
|
|
7
|
+
secretKeyPath: "iroh-secret.key",
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Environment variables used by the server.
|
|
11
|
+
*/
|
|
12
|
+
exports.ENV_VARS = {
|
|
13
|
+
/** Password to decrypt server identity private keys and per-tenant keybags */
|
|
14
|
+
SERVER_PASSWORD: "MINDOODB_SERVER_PASSWORD",
|
|
15
|
+
/**
|
|
16
|
+
* Path to a file whose contents are the server password (trimmed). If set, used
|
|
17
|
+
* instead of {@link ENV_VARS.SERVER_PASSWORD}. Prefer in Docker so the secret is
|
|
18
|
+
* not stored in the container environment block.
|
|
19
|
+
*/
|
|
20
|
+
SERVER_PASSWORD_FILE: "MINDOODB_SERVER_PASSWORD_FILE",
|
|
21
|
+
/**
|
|
22
|
+
* Optional comma-separated allowlist for /system/* (system admin HTTP surface).
|
|
23
|
+
* If unset or `*`, any client IP may call /system/* (JWT + capabilities still required).
|
|
24
|
+
* Supports exact IPv4/IPv6 addresses plus IPv4/IPv6 CIDRs.
|
|
25
|
+
* Example: `127.0.0.1,::1,10.0.0.0/8,2001:db8::/32`
|
|
26
|
+
*/
|
|
27
|
+
ADMIN_ALLOWED_IPS: "MINDOODB_ADMIN_ALLOWED_IPS",
|
|
28
|
+
/**
|
|
29
|
+
* Express `trust proxy` setting: a hop count (`1` behind Cloudflare, `2` when
|
|
30
|
+
* nginx also fronts the origin), a comma-separated list of trusted
|
|
31
|
+
* addresses/CIDRs, `loopback`, or `true`. Unset means no proxy is trusted.
|
|
32
|
+
*
|
|
33
|
+
* Every rate limiter keys on `req.ip`; behind a proxy without this, all
|
|
34
|
+
* clients share the proxy's address and therefore one budget.
|
|
35
|
+
*/
|
|
36
|
+
TRUST_PROXY: "MINDOODB_TRUST_PROXY",
|
|
37
|
+
/**
|
|
38
|
+
* When `true`/`1`, peer URLs may use plaintext http and target
|
|
39
|
+
* loopback/private/link-local hosts. Off by default so the server cannot be
|
|
40
|
+
* pointed at internal services (SSRF). Enable only for local development.
|
|
41
|
+
*/
|
|
42
|
+
ALLOW_INSECURE_SYNC_URLS: "MINDOODB_ALLOW_INSECURE_SYNC_URLS",
|
|
43
|
+
/**
|
|
44
|
+
* Comma-separated RFC 3161 Time-Stamping Authorities the proxy at
|
|
45
|
+
* `POST /:tenantId/timestamps/rfc3161` may contact. Each entry is a built-in
|
|
46
|
+
* id (`aimoda`, `opentsa`, `freetsa`, ...) or a custom `id=url` pair; suffix
|
|
47
|
+
* `!` marks the provider qualified and `+` marks its root publicly trusted.
|
|
48
|
+
*
|
|
49
|
+
* Example: `aimoda,opentsa,belgium=http://tsa.belgium.be/connect!+`
|
|
50
|
+
*
|
|
51
|
+
* Unset disables the proxy. Clients name a provider by id only — a URL from a
|
|
52
|
+
* client would turn the endpoint into an SSRF gadget.
|
|
53
|
+
*/
|
|
54
|
+
TSA_PROVIDERS: "MINDOODB_TSA_PROVIDERS",
|
|
55
|
+
};
|
|
56
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":";;;AAoOA,wFAAwF;AAC3E,QAAA,0BAA0B,GAAqB;IAC1D,OAAO,EAAE,KAAK;IACd,aAAa,EAAE,iBAAiB;CACjC,CAAC;AAgBF;;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;;;;;;;OAOG;IACH,WAAW,EAAE,sBAAsB;IACnC;;;;OAIG;IACH,wBAAwB,EAAE,mCAAmC;IAC7D;;;;;;;;;;OAUG;IACH,aAAa,EAAE,wBAAwB;CAC/B,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation utilities for the MindooDB Example Server.
|
|
3
|
+
*
|
|
4
|
+
* Prevents path traversal, injection, and resource exhaustion attacks
|
|
5
|
+
* by enforcing strict rules on all user-supplied identifiers and arrays.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Validates an identifier (dbId, serverName, etc.).
|
|
9
|
+
* Must be 1-64 chars, ASCII letters/digits/dots/hyphens, start with alphanumeric.
|
|
10
|
+
* Rejects path separators, "..", leading dots, and special characters.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateIdentifier(value: unknown, fieldName: string): string;
|
|
13
|
+
/**
|
|
14
|
+
* Validates a username (more permissive than identifier -- allows "CN=xxx/O=yyy" format).
|
|
15
|
+
* Max 256 chars, printable ASCII, no path separators or null bytes.
|
|
16
|
+
*/
|
|
17
|
+
export declare function validateUsername(value: unknown): string;
|
|
18
|
+
/**
|
|
19
|
+
* Validates that an array does not exceed a maximum number of elements.
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateArraySize(value: unknown, maxSize: number, fieldName: string): void;
|
|
22
|
+
/**
|
|
23
|
+
* Validates that a string does not exceed a maximum length.
|
|
24
|
+
*/
|
|
25
|
+
export declare function validateStringLength(value: unknown, maxLength: number, fieldName: string): void;
|
|
26
|
+
/**
|
|
27
|
+
* Validates tenant ID syntax without checking reserved route names.
|
|
28
|
+
*/
|
|
29
|
+
export declare function validateTenantIdFormat(value: unknown): string;
|
|
30
|
+
/**
|
|
31
|
+
* Validates a tenant ID: must pass tenant ID syntax rules and must not be reserved.
|
|
32
|
+
*/
|
|
33
|
+
export declare function validateTenantId(value: unknown): string;
|
|
34
|
+
export declare class ValidationError extends Error {
|
|
35
|
+
constructor(message: string);
|
|
36
|
+
}
|
|
37
|
+
export declare const MAX_HAVE_IDS = 100000;
|
|
38
|
+
export declare const MAX_ENTRY_IDS = 100000;
|
|
39
|
+
export declare const MAX_PUT_ENTRIES = 10000;
|
|
40
|
+
export declare const MAX_PEM_KEY_LENGTH = 8192;
|
|
41
|
+
export declare const MAX_SIGNATURE_LENGTH = 4096;
|
|
42
|
+
export declare const MAX_CHALLENGE_LENGTH = 4096;
|
|
43
|
+
//# sourceMappingURL=validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/server/validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAM5E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcvD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAU1F;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAU/F;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAS7D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAQvD;AAED,qBAAa,eAAgB,SAAQ,KAAK;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAGD,eAAO,MAAM,YAAY,SAAU,CAAC;AACpC,eAAO,MAAM,aAAa,SAAU,CAAC;AACrC,eAAO,MAAM,eAAe,QAAS,CAAC;AACtC,eAAO,MAAM,kBAAkB,OAAQ,CAAC;AACxC,eAAO,MAAM,oBAAoB,OAAQ,CAAC;AAC1C,eAAO,MAAM,oBAAoB,OAAQ,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Input validation utilities for the MindooDB Example Server.
|
|
4
|
+
*
|
|
5
|
+
* Prevents path traversal, injection, and resource exhaustion attacks
|
|
6
|
+
* by enforcing strict rules on all user-supplied identifiers and arrays.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.MAX_CHALLENGE_LENGTH = exports.MAX_SIGNATURE_LENGTH = exports.MAX_PEM_KEY_LENGTH = exports.MAX_PUT_ENTRIES = exports.MAX_ENTRY_IDS = exports.MAX_HAVE_IDS = exports.ValidationError = void 0;
|
|
10
|
+
exports.validateIdentifier = validateIdentifier;
|
|
11
|
+
exports.validateUsername = validateUsername;
|
|
12
|
+
exports.validateArraySize = validateArraySize;
|
|
13
|
+
exports.validateStringLength = validateStringLength;
|
|
14
|
+
exports.validateTenantIdFormat = validateTenantIdFormat;
|
|
15
|
+
exports.validateTenantId = validateTenantId;
|
|
16
|
+
const databaseIdValidation_1 = require("../core/databaseIdValidation");
|
|
17
|
+
const tenantIdValidation_1 = require("../core/tenantIdValidation");
|
|
18
|
+
/**
|
|
19
|
+
* Validates an identifier (dbId, serverName, etc.).
|
|
20
|
+
* Must be 1-64 chars, ASCII letters/digits/dots/hyphens, start with alphanumeric.
|
|
21
|
+
* Rejects path separators, "..", leading dots, and special characters.
|
|
22
|
+
*/
|
|
23
|
+
function validateIdentifier(value, fieldName) {
|
|
24
|
+
const error = (0, databaseIdValidation_1.getDatabaseIdValidationError)(value, fieldName);
|
|
25
|
+
if (error) {
|
|
26
|
+
throw new ValidationError(error);
|
|
27
|
+
}
|
|
28
|
+
return value;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validates a username (more permissive than identifier -- allows "CN=xxx/O=yyy" format).
|
|
32
|
+
* Max 256 chars, printable ASCII, no path separators or null bytes.
|
|
33
|
+
*/
|
|
34
|
+
function validateUsername(value) {
|
|
35
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
36
|
+
throw new ValidationError("username is required and must be a non-empty string");
|
|
37
|
+
}
|
|
38
|
+
if (value.length > 256) {
|
|
39
|
+
throw new ValidationError("username must be at most 256 characters");
|
|
40
|
+
}
|
|
41
|
+
if (/[\x00-\x1f\x7f]/.test(value)) {
|
|
42
|
+
throw new ValidationError("username must not contain control characters");
|
|
43
|
+
}
|
|
44
|
+
return value;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validates that an array does not exceed a maximum number of elements.
|
|
48
|
+
*/
|
|
49
|
+
function validateArraySize(value, maxSize, fieldName) {
|
|
50
|
+
if (!Array.isArray(value)) {
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
if (value.length > maxSize) {
|
|
54
|
+
throw new ValidationError(`${fieldName} must contain at most ${maxSize} elements (received ${value.length})`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validates that a string does not exceed a maximum length.
|
|
59
|
+
*/
|
|
60
|
+
function validateStringLength(value, maxLength, fieldName) {
|
|
61
|
+
if (typeof value !== "string") {
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
if (value.length > maxLength) {
|
|
65
|
+
throw new ValidationError(`${fieldName} must be at most ${maxLength} characters`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Validates tenant ID syntax without checking reserved route names.
|
|
70
|
+
*/
|
|
71
|
+
function validateTenantIdFormat(value) {
|
|
72
|
+
const error = (0, tenantIdValidation_1.getTenantIdValidationError)(value, "tenantId", {
|
|
73
|
+
allowReserved: true,
|
|
74
|
+
});
|
|
75
|
+
if (error) {
|
|
76
|
+
throw new ValidationError(error);
|
|
77
|
+
}
|
|
78
|
+
return value;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Validates a tenant ID: must pass tenant ID syntax rules and must not be reserved.
|
|
82
|
+
*/
|
|
83
|
+
function validateTenantId(value) {
|
|
84
|
+
const id = validateTenantIdFormat(value);
|
|
85
|
+
if (tenantIdValidation_1.RESERVED_TENANT_NAMES.has(id)) {
|
|
86
|
+
throw new ValidationError(`tenantId "${id}" is reserved and cannot be used`);
|
|
87
|
+
}
|
|
88
|
+
return id;
|
|
89
|
+
}
|
|
90
|
+
class ValidationError extends Error {
|
|
91
|
+
constructor(message) {
|
|
92
|
+
super(message);
|
|
93
|
+
this.name = "ValidationError";
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
exports.ValidationError = ValidationError;
|
|
97
|
+
// Limits
|
|
98
|
+
exports.MAX_HAVE_IDS = 100000;
|
|
99
|
+
exports.MAX_ENTRY_IDS = 100000;
|
|
100
|
+
exports.MAX_PUT_ENTRIES = 10000;
|
|
101
|
+
exports.MAX_PEM_KEY_LENGTH = 8192;
|
|
102
|
+
exports.MAX_SIGNATURE_LENGTH = 4096;
|
|
103
|
+
exports.MAX_CHALLENGE_LENGTH = 4096;
|
|
104
|
+
//# sourceMappingURL=validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/server/validation.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "mindoodb",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.86",
|
|
4
4
|
"engines": {
|
|
5
5
|
"node": ">=22.13.0"
|
|
6
6
|
},
|
|
@@ -39,6 +39,14 @@
|
|
|
39
39
|
"default": "./dist/browser/index.mjs"
|
|
40
40
|
},
|
|
41
41
|
"./node": "./dist/node/index.js",
|
|
42
|
+
"./server": {
|
|
43
|
+
"types": "./dist/server/index.d.ts",
|
|
44
|
+
"default": "./dist/server/index.js"
|
|
45
|
+
},
|
|
46
|
+
"./cloudflare": {
|
|
47
|
+
"types": "./dist/cloudflare/index.d.ts",
|
|
48
|
+
"default": "./dist/cloudflare/index.js"
|
|
49
|
+
},
|
|
42
50
|
"./reactnative": "./dist/reactnative/index.js",
|
|
43
51
|
"./sqlite": {
|
|
44
52
|
"types": "./dist/sqlite/index.d.ts",
|