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.
Files changed (264) hide show
  1. package/README-server.md +1 -0
  2. package/README.md +6 -4
  3. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts +15 -0
  4. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.d.ts.map +1 -1
  5. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js +75 -1
  6. package/dist/appendonlystores/network/ClientNetworkContentAddressedStore.js.map +1 -1
  7. package/dist/appendonlystores/network/HttpTransport.d.ts +9 -1
  8. package/dist/appendonlystores/network/HttpTransport.d.ts.map +1 -1
  9. package/dist/appendonlystores/network/HttpTransport.js +38 -10
  10. package/dist/appendonlystores/network/HttpTransport.js.map +1 -1
  11. package/dist/cloudflare/DurableObjectSql.d.ts +56 -0
  12. package/dist/cloudflare/DurableObjectSql.d.ts.map +1 -0
  13. package/dist/cloudflare/DurableObjectSql.js +180 -0
  14. package/dist/cloudflare/DurableObjectSql.js.map +1 -0
  15. package/dist/cloudflare/MindooDatabaseObject.d.ts +86 -0
  16. package/dist/cloudflare/MindooDatabaseObject.d.ts.map +1 -0
  17. package/dist/cloudflare/MindooDatabaseObject.js +614 -0
  18. package/dist/cloudflare/MindooDatabaseObject.js.map +1 -0
  19. package/dist/cloudflare/MindooServerObject.d.ts +63 -0
  20. package/dist/cloudflare/MindooServerObject.d.ts.map +1 -0
  21. package/dist/cloudflare/MindooServerObject.js +521 -0
  22. package/dist/cloudflare/MindooServerObject.js.map +1 -0
  23. package/dist/cloudflare/WorkersCryptoAdapter.d.ts +7 -0
  24. package/dist/cloudflare/WorkersCryptoAdapter.d.ts.map +1 -0
  25. package/dist/cloudflare/WorkersCryptoAdapter.js +14 -0
  26. package/dist/cloudflare/WorkersCryptoAdapter.js.map +1 -0
  27. package/dist/cloudflare/host.d.ts +49 -0
  28. package/dist/cloudflare/host.d.ts.map +1 -0
  29. package/dist/cloudflare/host.js +104 -0
  30. package/dist/cloudflare/host.js.map +1 -0
  31. package/dist/cloudflare/http.d.ts +91 -0
  32. package/dist/cloudflare/http.d.ts.map +1 -0
  33. package/dist/cloudflare/http.js +266 -0
  34. package/dist/cloudflare/http.js.map +1 -0
  35. package/dist/cloudflare/index.d.ts +12 -0
  36. package/dist/cloudflare/index.d.ts.map +1 -0
  37. package/dist/cloudflare/index.js +20 -0
  38. package/dist/cloudflare/index.js.map +1 -0
  39. package/dist/cloudflare/storeRpc.d.ts +22 -0
  40. package/dist/cloudflare/storeRpc.d.ts.map +1 -0
  41. package/dist/cloudflare/storeRpc.js +85 -0
  42. package/dist/cloudflare/storeRpc.js.map +1 -0
  43. package/dist/cloudflare/types.d.ts +101 -0
  44. package/dist/cloudflare/types.d.ts.map +1 -0
  45. package/dist/cloudflare/types.js +10 -0
  46. package/dist/cloudflare/types.js.map +1 -0
  47. package/dist/cloudflare/worker.d.ts +25 -0
  48. package/dist/cloudflare/worker.d.ts.map +1 -0
  49. package/dist/cloudflare/worker.js +170 -0
  50. package/dist/cloudflare/worker.js.map +1 -0
  51. package/dist/core/BaseMindooDB.d.ts +43 -1
  52. package/dist/core/BaseMindooDB.d.ts.map +1 -1
  53. package/dist/core/BaseMindooDB.js +209 -87
  54. package/dist/core/BaseMindooDB.js.map +1 -1
  55. package/dist/core/BaseMindooTenant.d.ts +14 -0
  56. package/dist/core/BaseMindooTenant.d.ts.map +1 -1
  57. package/dist/core/BaseMindooTenant.js +46 -0
  58. package/dist/core/BaseMindooTenant.js.map +1 -1
  59. package/dist/core/BaseMindooTenantDirectory.d.ts +10 -0
  60. package/dist/core/BaseMindooTenantDirectory.d.ts.map +1 -1
  61. package/dist/core/BaseMindooTenantDirectory.js +79 -8
  62. package/dist/core/BaseMindooTenantDirectory.js.map +1 -1
  63. package/dist/core/ChangeDocDraft.d.ts +133 -0
  64. package/dist/core/ChangeDocDraft.d.ts.map +1 -0
  65. package/dist/core/ChangeDocDraft.js +492 -0
  66. package/dist/core/ChangeDocDraft.js.map +1 -0
  67. package/dist/core/appendonlystores/InMemoryContentAddressedStore.d.ts.map +1 -1
  68. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js +1 -0
  69. package/dist/core/appendonlystores/InMemoryContentAddressedStore.js.map +1 -1
  70. package/dist/core/appendonlystores/network/AuthenticationService.d.ts +8 -0
  71. package/dist/core/appendonlystores/network/AuthenticationService.d.ts.map +1 -1
  72. package/dist/core/appendonlystores/network/AuthenticationService.js +19 -0
  73. package/dist/core/appendonlystores/network/AuthenticationService.js.map +1 -1
  74. package/dist/core/appendonlystores/network/IrohStreamIO.d.ts.map +1 -1
  75. package/dist/core/appendonlystores/network/IrohStreamIO.js +3 -23
  76. package/dist/core/appendonlystores/network/IrohStreamIO.js.map +1 -1
  77. package/dist/core/appendonlystores/network/NetworkTransport.d.ts +7 -1
  78. package/dist/core/appendonlystores/network/NetworkTransport.d.ts.map +1 -1
  79. package/dist/core/appendonlystores/network/types.d.ts +23 -0
  80. package/dist/core/appendonlystores/network/types.d.ts.map +1 -1
  81. package/dist/core/appendonlystores/network/types.js.map +1 -1
  82. package/dist/core/appendonlystores/rpc/storeRpcCodec.d.ts.map +1 -1
  83. package/dist/core/appendonlystores/rpc/storeRpcCodec.js +3 -23
  84. package/dist/core/appendonlystores/rpc/storeRpcCodec.js.map +1 -1
  85. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.d.ts.map +1 -1
  86. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js +21 -30
  87. package/dist/core/appendonlystores/sqlite/SqliteContentAddressedStore.js.map +1 -1
  88. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts +37 -1
  89. package/dist/core/appendonlystores/sqlite/SqliteDriver.d.ts.map +1 -1
  90. package/dist/core/appendonlystores/sqlite/SqliteDriver.js +99 -40
  91. package/dist/core/appendonlystores/sqlite/SqliteDriver.js.map +1 -1
  92. package/dist/core/appendonlystores/syncStores.d.ts.map +1 -1
  93. package/dist/core/appendonlystores/syncStores.js +253 -168
  94. package/dist/core/appendonlystores/syncStores.js.map +1 -1
  95. package/dist/core/appendonlystores/types.d.ts +8 -0
  96. package/dist/core/appendonlystores/types.d.ts.map +1 -1
  97. package/dist/core/appendonlystores/types.js.map +1 -1
  98. package/dist/core/expressions/evaluateExpression.d.ts +8 -0
  99. package/dist/core/expressions/evaluateExpression.d.ts.map +1 -1
  100. package/dist/core/expressions/evaluateExpression.js +29 -4
  101. package/dist/core/expressions/evaluateExpression.js.map +1 -1
  102. package/dist/core/expressions/metadata.js +4 -4
  103. package/dist/core/expressions/metadata.js.map +1 -1
  104. package/dist/core/types.d.ts +61 -2
  105. package/dist/core/types.d.ts.map +1 -1
  106. package/dist/core/types.js.map +1 -1
  107. package/dist/core/uri/MindooURI.d.ts.map +1 -1
  108. package/dist/core/uri/MindooURI.js +3 -24
  109. package/dist/core/uri/MindooURI.js.map +1 -1
  110. package/dist/core/utils/base64.d.ts +17 -0
  111. package/dist/core/utils/base64.d.ts.map +1 -0
  112. package/dist/core/utils/base64.js +54 -0
  113. package/dist/core/utils/base64.js.map +1 -0
  114. package/dist/core/utils/idGeneration.d.ts.map +1 -1
  115. package/dist/core/utils/idGeneration.js +14 -3
  116. package/dist/core/utils/idGeneration.js.map +1 -1
  117. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.d.ts.map +1 -1
  118. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js +1 -0
  119. package/dist/node/appendonlystores/BasicOnDiskContentAddressedStore.js.map +1 -1
  120. package/dist/node/server/FsServerDataStore.d.ts +23 -0
  121. package/dist/node/server/FsServerDataStore.d.ts.map +1 -0
  122. package/dist/node/server/FsServerDataStore.js +59 -0
  123. package/dist/node/server/FsServerDataStore.js.map +1 -0
  124. package/dist/node/server/IrohServerEndpoint.d.ts +1 -1
  125. package/dist/node/server/IrohServerEndpoint.d.ts.map +1 -1
  126. package/dist/node/server/IrohServerRpc.d.ts +5 -5
  127. package/dist/node/server/IrohServerRpc.d.ts.map +1 -1
  128. package/dist/node/server/IrohServerRpc.js +1 -1
  129. package/dist/node/server/IrohServerRpc.js.map +1 -1
  130. package/dist/node/server/MindooDBServer.d.ts +29 -150
  131. package/dist/node/server/MindooDBServer.d.ts.map +1 -1
  132. package/dist/node/server/MindooDBServer.js +160 -1568
  133. package/dist/node/server/MindooDBServer.js.map +1 -1
  134. package/dist/node/server/PurgedDocRegistry.d.ts +4 -27
  135. package/dist/node/server/PurgedDocRegistry.d.ts.map +1 -1
  136. package/dist/node/server/PurgedDocRegistry.js +6 -83
  137. package/dist/node/server/PurgedDocRegistry.js.map +1 -1
  138. package/dist/node/server/StoreFactory.d.ts +1 -1
  139. package/dist/node/server/StoreFactory.d.ts.map +1 -1
  140. package/dist/node/server/TenantManager.d.ts +16 -284
  141. package/dist/node/server/TenantManager.d.ts.map +1 -1
  142. package/dist/node/server/TenantManager.js +35 -1168
  143. package/dist/node/server/TenantManager.js.map +1 -1
  144. package/dist/node/server/add-to-network.js +1 -1
  145. package/dist/node/server/add-to-network.js.map +1 -1
  146. package/dist/node/server/compressionMiddleware.d.ts +14 -0
  147. package/dist/node/server/compressionMiddleware.d.ts.map +1 -1
  148. package/dist/node/server/compressionMiddleware.js +46 -3
  149. package/dist/node/server/compressionMiddleware.js.map +1 -1
  150. package/dist/node/server/config.d.ts +11 -15
  151. package/dist/node/server/config.d.ts.map +1 -1
  152. package/dist/node/server/config.js +30 -245
  153. package/dist/node/server/config.js.map +1 -1
  154. package/dist/node/server/expressAdapter.d.ts +23 -0
  155. package/dist/node/server/expressAdapter.d.ts.map +1 -0
  156. package/dist/node/server/expressAdapter.js +108 -0
  157. package/dist/node/server/expressAdapter.js.map +1 -0
  158. package/dist/node/server/nativeIrohStreamIO.d.ts +1 -1
  159. package/dist/node/server/nativeIrohStreamIO.d.ts.map +1 -1
  160. package/dist/node/server/peer/FileClusterAuditStorage.d.ts +16 -0
  161. package/dist/node/server/peer/FileClusterAuditStorage.d.ts.map +1 -0
  162. package/dist/node/server/peer/FileClusterAuditStorage.js +39 -0
  163. package/dist/node/server/peer/FileClusterAuditStorage.js.map +1 -0
  164. package/dist/node/server/peer/IrohPeerLink.d.ts +1 -1
  165. package/dist/node/server/peer/IrohPeerLink.d.ts.map +1 -1
  166. package/dist/node/server/peer/routes.d.ts +10 -44
  167. package/dist/node/server/peer/routes.d.ts.map +1 -1
  168. package/dist/node/server/peer/routes.js +33 -275
  169. package/dist/node/server/peer/routes.js.map +1 -1
  170. package/dist/node/server/resolveServerPassword.js +1 -1
  171. package/dist/node/server/resolveServerPassword.js.map +1 -1
  172. package/dist/node/server/server.js +1 -1
  173. package/dist/node/server/server.js.map +1 -1
  174. package/dist/node/server/serverinit.js +1 -1
  175. package/dist/node/server/serverinit.js.map +1 -1
  176. package/dist/server/CapabilityMatcher.d.ts +60 -0
  177. package/dist/server/CapabilityMatcher.d.ts.map +1 -0
  178. package/dist/server/CapabilityMatcher.js +138 -0
  179. package/dist/server/CapabilityMatcher.js.map +1 -0
  180. package/dist/server/DeviceDiscoveryService.d.ts +36 -0
  181. package/dist/server/DeviceDiscoveryService.d.ts.map +1 -0
  182. package/dist/server/DeviceDiscoveryService.js +165 -0
  183. package/dist/server/DeviceDiscoveryService.js.map +1 -0
  184. package/dist/server/PurgedDocRegistry.d.ts +35 -0
  185. package/dist/server/PurgedDocRegistry.d.ts.map +1 -0
  186. package/dist/server/PurgedDocRegistry.js +90 -0
  187. package/dist/server/PurgedDocRegistry.js.map +1 -0
  188. package/dist/server/ServerDataStore.d.ts +67 -0
  189. package/dist/server/ServerDataStore.d.ts.map +1 -0
  190. package/dist/server/ServerDataStore.js +88 -0
  191. package/dist/server/ServerDataStore.js.map +1 -0
  192. package/dist/server/SyncEventBus.d.ts +39 -0
  193. package/dist/server/SyncEventBus.d.ts.map +1 -0
  194. package/dist/server/SyncEventBus.js +41 -0
  195. package/dist/server/SyncEventBus.js.map +1 -0
  196. package/dist/server/SystemAdminAuth.d.ts +82 -0
  197. package/dist/server/SystemAdminAuth.d.ts.map +1 -0
  198. package/dist/server/SystemAdminAuth.js +228 -0
  199. package/dist/server/SystemAdminAuth.js.map +1 -0
  200. package/dist/server/TenantManager.d.ts +330 -0
  201. package/dist/server/TenantManager.d.ts.map +1 -0
  202. package/dist/server/TenantManager.js +1186 -0
  203. package/dist/server/TenantManager.js.map +1 -0
  204. package/dist/server/http/MindooDBServerCore.d.ts +313 -0
  205. package/dist/server/http/MindooDBServerCore.d.ts.map +1 -0
  206. package/dist/server/http/MindooDBServerCore.js +1403 -0
  207. package/dist/server/http/MindooDBServerCore.js.map +1 -0
  208. package/dist/server/http/types.d.ts +89 -0
  209. package/dist/server/http/types.d.ts.map +1 -0
  210. package/dist/server/http/types.js +29 -0
  211. package/dist/server/http/types.js.map +1 -0
  212. package/dist/server/index.d.ts +32 -0
  213. package/dist/server/index.d.ts.map +1 -0
  214. package/dist/server/index.js +76 -0
  215. package/dist/server/index.js.map +1 -0
  216. package/dist/server/peer/ClusterAuditLog.d.ts +71 -0
  217. package/dist/server/peer/ClusterAuditLog.d.ts.map +1 -0
  218. package/dist/server/peer/ClusterAuditLog.js +81 -0
  219. package/dist/server/peer/ClusterAuditLog.js.map +1 -0
  220. package/dist/server/peer/ClusterJobRunner.d.ts +43 -0
  221. package/dist/server/peer/ClusterJobRunner.d.ts.map +1 -0
  222. package/dist/server/peer/ClusterJobRunner.js +119 -0
  223. package/dist/server/peer/ClusterJobRunner.js.map +1 -0
  224. package/dist/server/peer/ClusterManager.d.ts +149 -0
  225. package/dist/server/peer/ClusterManager.d.ts.map +1 -0
  226. package/dist/server/peer/ClusterManager.js +292 -0
  227. package/dist/server/peer/ClusterManager.js.map +1 -0
  228. package/dist/server/peer/PeerAuthService.d.ts +69 -0
  229. package/dist/server/peer/PeerAuthService.d.ts.map +1 -0
  230. package/dist/server/peer/PeerAuthService.js +208 -0
  231. package/dist/server/peer/PeerAuthService.js.map +1 -0
  232. package/dist/server/peer/PeerReplicator.d.ts +303 -0
  233. package/dist/server/peer/PeerReplicator.d.ts.map +1 -0
  234. package/dist/server/peer/PeerReplicator.js +1071 -0
  235. package/dist/server/peer/PeerReplicator.js.map +1 -0
  236. package/dist/server/peer/clusterHttp.d.ts +113 -0
  237. package/dist/server/peer/clusterHttp.d.ts.map +1 -0
  238. package/dist/server/peer/clusterHttp.js +290 -0
  239. package/dist/server/peer/clusterHttp.js.map +1 -0
  240. package/dist/server/peer/types.d.ts +244 -0
  241. package/dist/server/peer/types.d.ts.map +1 -0
  242. package/dist/server/peer/types.js +189 -0
  243. package/dist/server/peer/types.js.map +1 -0
  244. package/dist/server/rateLimits.d.ts +119 -0
  245. package/dist/server/rateLimits.d.ts.map +1 -0
  246. package/dist/server/rateLimits.js +159 -0
  247. package/dist/server/rateLimits.js.map +1 -0
  248. package/dist/server/serverConfig.d.ts +37 -0
  249. package/dist/server/serverConfig.d.ts.map +1 -0
  250. package/dist/server/serverConfig.js +251 -0
  251. package/dist/server/serverConfig.js.map +1 -0
  252. package/dist/server/timestampProxy.d.ts +129 -0
  253. package/dist/server/timestampProxy.d.ts.map +1 -0
  254. package/dist/server/timestampProxy.js +361 -0
  255. package/dist/server/timestampProxy.js.map +1 -0
  256. package/dist/server/types.d.ts +267 -0
  257. package/dist/server/types.d.ts.map +1 -0
  258. package/dist/server/types.js +56 -0
  259. package/dist/server/types.js.map +1 -0
  260. package/dist/server/validation.d.ts +43 -0
  261. package/dist/server/validation.d.ts.map +1 -0
  262. package/dist/server/validation.js +104 -0
  263. package/dist/server/validation.js.map +1 -0
  264. 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":";AAAA;;;;;GAKG;;;AAaH,gDAMC;AAMD,4CAcC;AAKD,8CAUC;AAKD,oDAUC;AAKD,wDASC;AAKD,4CAQC;AA9FD,uEAA4E;AAC5E,mEAGoC;AAEpC;;;;GAIG;AACH,SAAgB,kBAAkB,CAAC,KAAc,EAAE,SAAiB;IAClE,MAAM,KAAK,GAAG,IAAA,mDAA4B,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC7D,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,KAAe,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,eAAe,CAAC,qDAAqD,CAAC,CAAC;IACnF,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;QACvB,MAAM,IAAI,eAAe,CAAC,yCAAyC,CAAC,CAAC;IACvE,CAAC;IAED,IAAI,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,eAAe,CAAC,8CAA8C,CAAC,CAAC;IAC5E,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,iBAAiB,CAAC,KAAc,EAAE,OAAe,EAAE,SAAiB;IAClF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,EAAE,CAAC;QAC3B,MAAM,IAAI,eAAe,CACvB,GAAG,SAAS,yBAAyB,OAAO,uBAAuB,KAAK,CAAC,MAAM,GAAG,CACnF,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,oBAAoB,CAAC,KAAc,EAAE,SAAiB,EAAE,SAAiB;IACvF,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO;IACT,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,eAAe,CACvB,GAAG,SAAS,oBAAoB,SAAS,aAAa,CACvD,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;GAEG;AACH,SAAgB,sBAAsB,CAAC,KAAc;IACnD,MAAM,KAAK,GAAG,IAAA,+CAA0B,EAAC,KAAK,EAAE,UAAU,EAAE;QAC1D,aAAa,EAAE,IAAI;KACpB,CAAC,CAAC;IACH,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAI,eAAe,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,KAAe,CAAC;AACzB,CAAC;AAED;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAc;IAC7C,MAAM,EAAE,GAAG,sBAAsB,CAAC,KAAK,CAAC,CAAC;IACzC,IAAI,0CAAqB,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,eAAe,CACvB,aAAa,EAAE,kCAAkC,CAClD,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAa,eAAgB,SAAQ,KAAK;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AALD,0CAKC;AAED,SAAS;AACI,QAAA,YAAY,GAAG,MAAO,CAAC;AACvB,QAAA,aAAa,GAAG,MAAO,CAAC;AACxB,QAAA,eAAe,GAAG,KAAM,CAAC;AACzB,QAAA,kBAAkB,GAAG,IAAK,CAAC;AAC3B,QAAA,oBAAoB,GAAG,IAAK,CAAC;AAC7B,QAAA,oBAAoB,GAAG,IAAK,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mindoodb",
3
- "version": "0.0.84",
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",