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,63 @@
1
+ /**
2
+ * The server-wide Durable Object (one instance, named "server").
3
+ *
4
+ * It plays the role of the Node server's data directory minus the entry
5
+ * stores: `config.json` and its backups, the trusted-servers list, the server
6
+ * key bag with every tenant's `$publicinfos` key, and the tenant configs. It
7
+ * serves `/system/*` and the discovery endpoints, and hands each tenant's
8
+ * state (config + keys) to the database objects that serve the tenant.
9
+ */
10
+ import type { DurableObjectState, MindooCloudflareEnv } from "./types";
11
+ export declare class MindooServerObject {
12
+ private readonly ctx;
13
+ private readonly env;
14
+ private readonly settings;
15
+ private readonly dataStore;
16
+ private readonly tenantManager;
17
+ private readonly capabilityMatcher;
18
+ private readonly systemAdminAuth;
19
+ private readonly core;
20
+ private serverConfig;
21
+ /** Change events of all tenants: peer replication and the peer event feed listen. */
22
+ private readonly eventBus;
23
+ private cluster;
24
+ private clusterInit;
25
+ private readonly localStores;
26
+ constructor(ctx: DurableObjectState, env: MindooCloudflareEnv);
27
+ private get autoSync();
28
+ /**
29
+ * The cluster of this server: peer sessions and replicators, as on Node.
30
+ * Local stores are the database objects' stores, reached by store RPC.
31
+ * Replication runs on the cron tick and on reported writes instead of on a
32
+ * long-lived event stream to each peer.
33
+ */
34
+ private getCluster;
35
+ private localStore;
36
+ /** Start replication when `config.json` enables it (`cluster.autoSync`). */
37
+ private startClusterIfEnabled;
38
+ /**
39
+ * Cron tick: one replication pass with every peer, within a time budget so
40
+ * that a large first mirror stays inside the per-request CPU and subrequest
41
+ * limits. What the budget does not cover continues on the next tick.
42
+ */
43
+ private tick;
44
+ /** A database object accepted a write: tell peers (feed) and push to them. */
45
+ private localChange;
46
+ fetch(request: Request): Promise<Response>;
47
+ private route;
48
+ private parse;
49
+ /**
50
+ * Config and `$publicinfos` keys of one tenant, for the objects serving its
51
+ * databases. Only reachable from inside the Worker.
52
+ */
53
+ private tenantState;
54
+ /** `/system/*` with the routing and guards of the Node server's system router. */
55
+ private system;
56
+ private clusterHandler;
57
+ /** `/system/peer/*`: the server-to-server protocol, authenticated by peer tokens. */
58
+ private peer;
59
+ /** Change feed for a peer (Node peers keep it open to pull our writes promptly). */
60
+ private peerEventStream;
61
+ private systemHandler;
62
+ }
63
+ //# sourceMappingURL=MindooServerObject.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MindooServerObject.d.ts","sourceRoot":"","sources":["../../src/cloudflare/MindooServerObject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoDH,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,SAAS,CAAC;AA0EvE,qBAAa,kBAAkB;IAe3B,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,GAAG;IAftB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAe;IACxC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;IACzD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;IAC9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAoB;IACtD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyB;IACzD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAqB;IAC1C,OAAO,CAAC,YAAY,CAAe;IACnC,qFAAqF;IACrF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsB;IAC/C,OAAO,CAAC,OAAO,CAA+B;IAC9C,OAAO,CAAC,WAAW,CAAwC;IAC3D,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA4C;gBAGrD,GAAG,EAAE,kBAAkB,EACvB,GAAG,EAAE,mBAAmB;IAsE3C,OAAO,KAAK,QAAQ,GAEnB;IAED;;;;;OAKG;IACH,OAAO,CAAC,UAAU;IA0ClB,OAAO,CAAC,UAAU;IAgBlB,4EAA4E;YAC9D,qBAAqB;IAQnC;;;;OAIG;YACW,IAAI;IAalB,8EAA8E;YAChE,WAAW;IAUnB,KAAK,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;YAUlC,KAAK;YA6BL,KAAK;IAWnB;;;OAGG;YACW,WAAW;IAsBzB,kFAAkF;YACpE,MAAM;IA6CpB,OAAO,CAAC,cAAc;IAqCtB,qFAAqF;YACvE,IAAI;IAuClB,oFAAoF;IACpF,OAAO,CAAC,eAAe;IA+BvB,OAAO,CAAC,aAAa;CAkCtB"}
@@ -0,0 +1,521 @@
1
+ "use strict";
2
+ /**
3
+ * The server-wide Durable Object (one instance, named "server").
4
+ *
5
+ * It plays the role of the Node server's data directory minus the entry
6
+ * stores: `config.json` and its backups, the trusted-servers list, the server
7
+ * key bag with every tenant's `$publicinfos` key, and the tenant configs. It
8
+ * serves `/system/*` and the discovery endpoints, and hands each tenant's
9
+ * state (config + keys) to the database objects that serve the tenant.
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.MindooServerObject = void 0;
13
+ const base64_1 = require("../core/utils/base64");
14
+ const MindooDBServerCore_1 = require("../server/http/MindooDBServerCore");
15
+ const TenantManager_1 = require("../server/TenantManager");
16
+ const CapabilityMatcher_1 = require("../server/CapabilityMatcher");
17
+ const SystemAdminAuth_1 = require("../server/SystemAdminAuth");
18
+ const DeviceDiscoveryService_1 = require("../server/DeviceDiscoveryService");
19
+ const SyncEventBus_1 = require("../server/SyncEventBus");
20
+ const serverConfig_1 = require("../server/serverConfig");
21
+ const validation_1 = require("../server/validation");
22
+ const rateLimits_1 = require("../server/rateLimits");
23
+ const ClusterManager_1 = require("../server/peer/ClusterManager");
24
+ const clusterHttp_1 = require("../server/peer/clusterHttp");
25
+ const MindooDBServerCore_2 = require("../server/http/MindooDBServerCore");
26
+ const storeRpc_1 = require("./storeRpc");
27
+ const DurableObjectSql_1 = require("./DurableObjectSql");
28
+ const WorkersCryptoAdapter_1 = require("./WorkersCryptoAdapter");
29
+ const http_1 = require("./http");
30
+ const host_1 = require("./host");
31
+ const CONFIG_KEY = "config.json";
32
+ const CONFIG_BACKUP_DIR = "config-backups";
33
+ /** `config.json` and its backups as documents of the server object. */
34
+ class StoredServerConfigRepository {
35
+ constructor(dataStore) {
36
+ this.dataStore = dataStore;
37
+ }
38
+ listBackups() {
39
+ const rows = this.dataStore.listFiles(CONFIG_BACKUP_DIR);
40
+ return rows
41
+ .filter((file) => (0, serverConfig_1.isConfigBackupFilename)(file))
42
+ .map((file) => ({ file, createdAt: (0, serverConfig_1.parseConfigBackupTimestamp)(file) }))
43
+ .sort((a, b) => b.createdAt.localeCompare(a.createdAt));
44
+ }
45
+ loadBackup(backupFile) {
46
+ if (!(0, serverConfig_1.isConfigBackupFilename)(backupFile)) {
47
+ throw new Error(`Invalid config backup filename: ${backupFile}`);
48
+ }
49
+ const raw = this.dataStore.readText(`${CONFIG_BACKUP_DIR}/${backupFile}`);
50
+ if (raw === null) {
51
+ throw new Error(`Config backup not found: ${backupFile}`);
52
+ }
53
+ return (0, serverConfig_1.validateServerConfig)(JSON.parse(raw), backupFile);
54
+ }
55
+ replace(config) {
56
+ const current = this.dataStore.readText(CONFIG_KEY);
57
+ let backupFile = null;
58
+ if (current !== null) {
59
+ backupFile = `config.${new Date().toISOString().replace(/:/g, "-")}.json`;
60
+ this.dataStore.writeText(`${CONFIG_BACKUP_DIR}/${backupFile}`, current);
61
+ }
62
+ this.dataStore.writeText(CONFIG_KEY, JSON.stringify(config, null, 2));
63
+ return backupFile;
64
+ }
65
+ }
66
+ /**
67
+ * Wall-time budget of one cron tick's replication pass. Each pass starts new
68
+ * store pairs only within it; cron invocations may run 15 minutes, and the
69
+ * CPU limit is raised to 5 minutes in wrangler.jsonc (`limits.cpu_ms`).
70
+ */
71
+ const CLUSTER_TICK_BUDGET_MS = 4 * 60 * 1000;
72
+ /** Most recent audit records kept; older ones are dropped. */
73
+ const MAX_AUDIT_RECORDS = 10000;
74
+ /** The cluster audit log as rows of the server object's SQLite. */
75
+ class SqlClusterAuditStorage {
76
+ constructor(sql) {
77
+ this.sql = sql;
78
+ sql.exec("CREATE TABLE IF NOT EXISTS mindoo_cluster_audit (seq INTEGER PRIMARY KEY AUTOINCREMENT, line TEXT NOT NULL)");
79
+ }
80
+ appendLine(line) {
81
+ this.sql.exec("INSERT INTO mindoo_cluster_audit(line) VALUES(?)", line);
82
+ this.sql.exec("DELETE FROM mindoo_cluster_audit WHERE seq <= (SELECT MAX(seq) FROM mindoo_cluster_audit) - ?", MAX_AUDIT_RECORDS);
83
+ }
84
+ readLines() {
85
+ return this.sql
86
+ .exec("SELECT line FROM mindoo_cluster_audit ORDER BY seq")
87
+ .toArray()
88
+ .map((row) => row.line);
89
+ }
90
+ }
91
+ class MindooServerObject {
92
+ constructor(ctx, env) {
93
+ this.ctx = ctx;
94
+ this.env = env;
95
+ /** Change events of all tenants: peer replication and the peer event feed listen. */
96
+ this.eventBus = new SyncEventBus_1.SyncEventBus();
97
+ this.cluster = null;
98
+ this.clusterInit = null;
99
+ this.localStores = new Map();
100
+ this.settings = (0, host_1.createHostSettings)(env);
101
+ this.dataStore = new DurableObjectSql_1.DurableObjectServerDataStore(ctx.storage.sql);
102
+ (0, host_1.seedServerIdentity)(this.dataStore, env);
103
+ const storedConfig = this.dataStore.readText(CONFIG_KEY);
104
+ this.serverConfig = storedConfig !== null
105
+ ? (0, serverConfig_1.validateServerConfig)(JSON.parse(storedConfig), CONFIG_KEY)
106
+ : env.MINDOODB_SERVER_CONFIG
107
+ ? (0, serverConfig_1.validateServerConfig)(JSON.parse(env.MINDOODB_SERVER_CONFIG), "MINDOODB_SERVER_CONFIG")
108
+ : { capabilities: {} };
109
+ const cryptoAdapter = new WorkersCryptoAdapter_1.WorkersCryptoAdapter();
110
+ this.tenantManager = new TenantManager_1.TenantManager({
111
+ dataStore: this.dataStore,
112
+ cryptoAdapter,
113
+ serverPassword: env.MINDOODB_SERVER_PASSWORD,
114
+ storeProvider: {
115
+ createTenantStores: () => ({
116
+ getStore: () => {
117
+ throw new Error("The server object holds no entry stores");
118
+ },
119
+ }),
120
+ listDatabases: () => [],
121
+ // The tenant's databases live in their own objects; the tenant's
122
+ // directory object knows them and wipes them.
123
+ removeTenantStores: async (tenantId) => {
124
+ const response = await (0, host_1.databaseObject)(env, tenantId, "directory").fetch(`${http_1.INTERNAL_ORIGIN}/internal/wipe`, { method: "POST", headers: (0, host_1.internalHeaders)(tenantId, "directory") });
125
+ if (!response.ok) {
126
+ throw new Error(`Wiping tenant ${tenantId} failed with HTTP ${response.status}`);
127
+ }
128
+ },
129
+ },
130
+ });
131
+ this.capabilityMatcher = new CapabilityMatcher_1.CapabilityMatcher(this.serverConfig);
132
+ this.systemAdminAuth = new SystemAdminAuth_1.SystemAdminAuthService(cryptoAdapter, this.serverConfig, {
133
+ isTenantAdminSigningKey: (publicsignkey) => this.tenantManager.isRegisteredTenantAdminSigningKey(publicsignkey),
134
+ });
135
+ this.core = new MindooDBServerCore_1.MindooDBServerCore({
136
+ tenantManager: this.tenantManager,
137
+ systemAdminAuth: this.systemAdminAuth,
138
+ capabilityMatcher: this.capabilityMatcher,
139
+ deviceDiscovery: new DeviceDiscoveryService_1.DeviceDiscoveryService(this.tenantManager, cryptoAdapter),
140
+ syncEvents: new SyncEventBus_1.SyncEventBus(),
141
+ configRepository: new StoredServerConfigRepository(this.dataStore),
142
+ getServerConfig: () => this.serverConfig,
143
+ reloadConfig: (config) => {
144
+ this.serverConfig = config;
145
+ this.capabilityMatcher.reload(config);
146
+ this.systemAdminAuth.reloadPrincipals(config);
147
+ },
148
+ tsaProviders: this.settings.tsaProviders,
149
+ jsonBodyLimit: this.settings.jsonBodyLimit,
150
+ allowInsecureSyncUrls: this.settings.allowInsecureSyncUrls,
151
+ runInBackground: (task) => ctx.waitUntil(task),
152
+ cluster: {
153
+ mirrorsForTenant: (tenantId) => this.cluster?.mirrorsForTenant(tenantId) ?? [],
154
+ syncReplicators: () => this.cluster?.syncReplicators(),
155
+ resolvePeerName: async (token) => (await this.getCluster()).auth.validateToken(token).then((p) => p?.sub),
156
+ },
157
+ });
158
+ }
159
+ // ==================== Peer replication ====================
160
+ get autoSync() {
161
+ return this.serverConfig.cluster?.autoSync === true;
162
+ }
163
+ /**
164
+ * The cluster of this server: peer sessions and replicators, as on Node.
165
+ * Local stores are the database objects' stores, reached by store RPC.
166
+ * Replication runs on the cron tick and on reported writes instead of on a
167
+ * long-lived event stream to each peer.
168
+ */
169
+ getCluster() {
170
+ if (this.cluster)
171
+ return Promise.resolve(this.cluster);
172
+ this.clusterInit ?? (this.clusterInit = (0, host_1.derivePeerJwtSecret)(this.env).then((peerJwtSecret) => {
173
+ const env = this.env;
174
+ const tenantManager = this.tenantManager;
175
+ this.cluster = new ClusterManager_1.ClusterManager({
176
+ cryptoAdapter: tenantManager.getCryptoAdapter(),
177
+ auditStorage: new SqlClusterAuditStorage(this.ctx.storage.sql),
178
+ eventBus: this.eventBus,
179
+ peerJwtSecret,
180
+ liveEventStream: false,
181
+ // 128 MB per isolate: one small batch in flight (attachment chunks are
182
+ // up to 256 KB, so a batch holds at most ~4 MB plus its copies).
183
+ transferLimits: { maxConcurrentBatches: 1, docsBatchSize: 100, attachmentsBatchSize: 16 },
184
+ localRole: this.serverConfig.cluster?.role,
185
+ listTrustedServers: () => tenantManager.listTrustedServers(),
186
+ localServerName: () => tenantManager.getServerPublicInfo()?.name ?? null,
187
+ localSigningPublicKey: () => tenantManager.getServerPublicInfo()?.signingPublicKey ?? null,
188
+ getSigningKey: async () => (await tenantManager.getWitnessSigner())?.signingPrivateKey,
189
+ getEncryptionKey: () => tenantManager.getServerEncryptionPrivateKey(),
190
+ listTenants: () => tenantManager.listTenants(),
191
+ listDatabases: async (tenantId) => {
192
+ const response = await (0, host_1.databaseObject)(env, tenantId, "directory").fetch(`${http_1.INTERNAL_ORIGIN}/internal/databases`, { headers: (0, host_1.internalHeaders)(tenantId, "directory") });
193
+ if (!response.ok)
194
+ return ["directory"];
195
+ return (await response.json()).databases;
196
+ },
197
+ getLocalStore: async (tenantId, dbId, storeKind) => this.localStore(tenantId, dbId, storeKind),
198
+ onDirectoryPulled: async (tenantId) => {
199
+ await (0, host_1.databaseObject)(env, tenantId, "directory").fetch(`${http_1.INTERNAL_ORIGIN}/internal/directory/announce`, { method: "POST", headers: (0, host_1.internalHeaders)(tenantId, "directory") });
200
+ },
201
+ });
202
+ return this.cluster;
203
+ }));
204
+ return this.clusterInit;
205
+ }
206
+ localStore(tenantId, dbId, storeKind) {
207
+ const key = `${tenantId}\u0000${dbId}\u0000${storeKind}`;
208
+ let store = this.localStores.get(key);
209
+ if (!store) {
210
+ store = (0, storeRpc_1.remoteObjectStore)((0, host_1.databaseObject)(this.env, tenantId, dbId), (0, host_1.internalHeaders)(tenantId, dbId), tenantId, dbId, storeKind);
211
+ this.localStores.set(key, store);
212
+ }
213
+ return store;
214
+ }
215
+ /** Start replication when `config.json` enables it (`cluster.autoSync`). */
216
+ async startClusterIfEnabled() {
217
+ const cluster = await this.getCluster();
218
+ if (this.autoSync && !cluster.autoSyncEnabled) {
219
+ cluster.start();
220
+ }
221
+ return cluster;
222
+ }
223
+ /**
224
+ * Cron tick: one replication pass with every peer, within a time budget so
225
+ * that a large first mirror stays inside the per-request CPU and subrequest
226
+ * limits. What the budget does not cover continues on the next tick.
227
+ */
228
+ async tick() {
229
+ const cluster = await this.startClusterIfEnabled();
230
+ let deferred = false;
231
+ if (cluster.autoSyncEnabled) {
232
+ ({ deferred } = await cluster.syncAll({ deadline: Date.now() + CLUSTER_TICK_BUDGET_MS }));
233
+ }
234
+ return (0, http_1.jsonResponse)(200, {
235
+ autoSync: cluster.autoSyncEnabled,
236
+ peers: cluster.status().peers.length,
237
+ deferred,
238
+ });
239
+ }
240
+ /** A database object accepted a write: tell peers (feed) and push to them. */
241
+ async localChange(request) {
242
+ const event = (await request.json());
243
+ this.eventBus.publish(event);
244
+ const cluster = await this.startClusterIfEnabled();
245
+ if (cluster.autoSyncEnabled) {
246
+ await cluster.replicateLocalChange(event);
247
+ }
248
+ return (0, http_1.jsonResponse)(200, { ok: true });
249
+ }
250
+ async fetch(request) {
251
+ try {
252
+ return await this.route(request);
253
+ }
254
+ catch (error) {
255
+ if (error instanceof ParsedRejection)
256
+ return error.response;
257
+ console.error("[MindooServerObject] Request error:", error);
258
+ return (0, http_1.jsonResponse)(500, { error: "Internal server error" });
259
+ }
260
+ }
261
+ async route(request) {
262
+ const url = new URL(request.url);
263
+ if ((0, http_1.isInternalCall)(request)) {
264
+ const internal = /^\/internal\/tenants\/([^/]+)$/.exec(url.pathname);
265
+ if (internal)
266
+ return this.tenantState(decodeURIComponent(internal[1]));
267
+ if (url.pathname === "/internal/cluster/tick")
268
+ return this.tick();
269
+ if (url.pathname === "/internal/cluster/change")
270
+ return this.localChange(request);
271
+ }
272
+ const route = (0, http_1.matchRoute)(request.method, url.pathname);
273
+ switch (route.kind) {
274
+ case "serverInfo":
275
+ return (0, http_1.toResponse)(this.core.serverInfo());
276
+ case "clusterMirrors":
277
+ await this.startClusterIfEnabled();
278
+ return (0, http_1.toResponse)(this.core.clusterMirrors(await this.parse(request, {})));
279
+ case "peer":
280
+ return this.peer(request, route.path);
281
+ case "publicInfosFingerprints":
282
+ return (0, http_1.toResponse)(await this.core.publicInfosFingerprints(await this.parse(request, { tenantId: route.tenantId })));
283
+ case "system":
284
+ return this.system(request, route.path);
285
+ default:
286
+ return (0, http_1.jsonResponse)(404, { error: "Not found" });
287
+ }
288
+ }
289
+ async parse(request, params) {
290
+ const parsed = await (0, http_1.toServerRequest)(request, {
291
+ params,
292
+ jsonBodyLimitBytes: this.settings.jsonBodyLimitBytes,
293
+ });
294
+ if (parsed instanceof Response) {
295
+ throw new ParsedRejection(parsed);
296
+ }
297
+ return parsed;
298
+ }
299
+ /**
300
+ * Config and `$publicinfos` keys of one tenant, for the objects serving its
301
+ * databases. Only reachable from inside the Worker.
302
+ */
303
+ async tenantState(rawTenantId) {
304
+ const tenantId = rawTenantId.toLowerCase();
305
+ try {
306
+ (0, validation_1.validateTenantIdFormat)(tenantId);
307
+ }
308
+ catch {
309
+ return (0, http_1.jsonResponse)(400, { error: "Invalid tenant ID format" });
310
+ }
311
+ if (!this.tenantManager.tenantExists(tenantId)) {
312
+ return (0, http_1.jsonResponse)(200, { exists: false });
313
+ }
314
+ const config = JSON.parse(this.dataStore.readText(`${tenantId}/config.json`));
315
+ const keys = await this.tenantManager.getPublicInfosKeysForTenant(tenantId);
316
+ const trustedServers = this.tenantManager.listTrustedServers();
317
+ return (0, http_1.jsonResponse)(200, {
318
+ exists: true,
319
+ config,
320
+ publicInfosKeys: keys.map((key) => (0, base64_1.bytesToBase64)(key)),
321
+ trustedServers,
322
+ clusterActive: this.autoSync && trustedServers.some((server) => Boolean(server.url)),
323
+ });
324
+ }
325
+ /** `/system/*` with the routing and guards of the Node server's system router. */
326
+ async system(request, path) {
327
+ {
328
+ const method = request.method.toUpperCase();
329
+ const segments = path.split("/").slice(2).map((segment) => {
330
+ try {
331
+ return decodeURIComponent(segment);
332
+ }
333
+ catch {
334
+ return segment;
335
+ }
336
+ });
337
+ const lower = segments.map((segment) => segment.toLowerCase());
338
+ const clientIp = request.headers.get("x-mindoodb-client-ip") ?? "unknown";
339
+ if (method === "POST" && lower.length === 2 && lower[0] === "auth") {
340
+ const phase = lower[1] === "challenge" ? "challenge" : lower[1] === "authenticate" ? "authenticate" : null;
341
+ if (phase) {
342
+ const req = await this.parse(request, {});
343
+ const limited = await (0, host_1.rateLimited)(this.env.MINDOODB_RATE_LIMIT_AUTH, (0, rateLimits_1.buildAuthRateLimitKey)("system", phase, undefined, clientIp, req.body), "Too many authentication attempts, please try again later");
344
+ if (limited)
345
+ return limited;
346
+ return (0, http_1.toResponse)(phase === "challenge"
347
+ ? await this.core.systemChallenge(req)
348
+ : await this.core.systemAuthenticate(req));
349
+ }
350
+ }
351
+ const cluster = lower[0] === "cluster";
352
+ const handler = cluster
353
+ ? this.clusterHandler(method, segments.slice(1), lower.slice(1), await this.startClusterIfEnabled())
354
+ : this.systemHandler(method, segments, lower);
355
+ if (!handler) {
356
+ return (0, http_1.jsonResponse)(404, { error: "Not found" });
357
+ }
358
+ const req = await this.parse(request, handler.params);
359
+ const rejection = await this.core.systemAdminGuard(req, path);
360
+ if (rejection)
361
+ return (0, http_1.toResponse)(rejection);
362
+ return (0, http_1.toResponse)(await handler.run(req));
363
+ }
364
+ }
365
+ clusterHandler(method, segments, lower, cluster) {
366
+ const handlers = new clusterHttp_1.ClusterAdminHandlers({
367
+ cluster,
368
+ listTrustedServers: () => this.tenantManager.listTrustedServers(),
369
+ saveTrustedServer: (peer) => this.tenantManager.saveTrustedServer(peer),
370
+ removeTrustedServer: (name) => this.tenantManager.removeTrustedServer(name),
371
+ });
372
+ const [first, second, third] = lower;
373
+ if (method === "GET" && lower.length === 1 && first === "topology")
374
+ return { params: {}, run: () => handlers.topology() };
375
+ if (method === "GET" && lower.length === 1 && first === "status")
376
+ return { params: {}, run: () => handlers.status() };
377
+ if (method === "GET" && lower.length === 3 && first === "status" && second === "tenants") {
378
+ return { params: { tenantId: segments[2] }, run: (req) => handlers.tenantStatus(req) };
379
+ }
380
+ if (method === "GET" && lower.length === 1 && first === "jobs")
381
+ return { params: {}, run: (req) => handlers.jobs(req) };
382
+ if (method === "GET" && lower.length === 2 && first === "jobs") {
383
+ return { params: { jobId: segments[1] }, run: (req) => handlers.job(req) };
384
+ }
385
+ if (method === "GET" && lower.length === 1 && first === "audit")
386
+ return { params: {}, run: (req) => handlers.audit(req) };
387
+ if (method === "POST" && lower.length === 2 && first === "actions") {
388
+ return { params: { action: segments[1] }, run: (req) => handlers.action(req) };
389
+ }
390
+ if (lower.length === 1 && first === "peers" && method === "GET")
391
+ return { params: {}, run: () => handlers.peers() };
392
+ if (lower.length === 2 && first === "peers") {
393
+ const params = { name: segments[1] };
394
+ if (method === "POST")
395
+ return { params, run: (req) => handlers.createPeer(req) };
396
+ if (method === "PATCH")
397
+ return { params, run: (req) => handlers.updatePeer(req) };
398
+ if (method === "DELETE")
399
+ return { params, run: (req) => handlers.deletePeer(req) };
400
+ }
401
+ void third;
402
+ return null;
403
+ }
404
+ /** `/system/peer/*`: the server-to-server protocol, authenticated by peer tokens. */
405
+ async peer(request, path) {
406
+ const cluster = await this.startClusterIfEnabled();
407
+ const handlers = new clusterHttp_1.PeerHttpHandlers({
408
+ cluster,
409
+ listTenants: () => this.tenantManager.listTenants(),
410
+ listDatabases: async (tenantId) => {
411
+ const response = await (0, host_1.databaseObject)(this.env, tenantId, "directory").fetch(`${http_1.INTERNAL_ORIGIN}/internal/databases`, { headers: (0, host_1.internalHeaders)(tenantId, "directory") });
412
+ return response.ok ? (await response.json()).databases : [];
413
+ },
414
+ });
415
+ const method = request.method.toUpperCase();
416
+ const name = path.split("/")[3]?.toLowerCase() ?? "";
417
+ const req = await this.parse(request, {});
418
+ if (method === "POST" && name === "challenge")
419
+ return (0, http_1.toResponse)(await handlers.challenge(req));
420
+ if (method === "POST" && name === "authenticate")
421
+ return (0, http_1.toResponse)(await handlers.authenticate(req));
422
+ const known = (method === "POST" && (name === "tenant-bloom" || name === "sync")) ||
423
+ (method === "GET" && (name === "databases" || name === "events"));
424
+ if (!known)
425
+ return (0, http_1.jsonResponse)(404, { error: "Not found" });
426
+ const rejection = await handlers.peerGuard(req);
427
+ if (rejection)
428
+ return (0, http_1.toResponse)(rejection);
429
+ switch (name) {
430
+ case "tenant-bloom":
431
+ return (0, http_1.toResponse)(handlers.tenantBloom(req));
432
+ case "databases":
433
+ return (0, http_1.toResponse)(await handlers.databases(req));
434
+ case "sync":
435
+ return (0, http_1.toResponse)(handlers.sync(req, (task) => this.ctx.waitUntil(task)));
436
+ default:
437
+ return this.peerEventStream(cluster, req.peerName);
438
+ }
439
+ }
440
+ /** Change feed for a peer (Node peers keep it open to pull our writes promptly). */
441
+ peerEventStream(cluster, peerName) {
442
+ const { readable, writable } = new TransformStream();
443
+ const writer = writable.getWriter();
444
+ const encoder = new TextEncoder();
445
+ let closed = false;
446
+ const cleanup = () => {
447
+ if (closed)
448
+ return;
449
+ closed = true;
450
+ clearInterval(heartbeat);
451
+ unsubscribe();
452
+ writer.close().catch(() => undefined);
453
+ };
454
+ const write = (frame) => {
455
+ if (!closed)
456
+ writer.write(encoder.encode(frame)).catch(cleanup);
457
+ };
458
+ write((0, MindooDBServerCore_2.formatSyncHelloEvent)());
459
+ const unsubscribe = this.eventBus.subscribe((event) => {
460
+ const frame = (0, clusterHttp_1.formatPeerChangeEvent)(cluster, peerName, event);
461
+ if (frame)
462
+ write(frame);
463
+ });
464
+ const heartbeat = setInterval(() => write((0, MindooDBServerCore_2.formatSyncHeartbeat)(Date.now())), MindooDBServerCore_2.SYNC_EVENT_HEARTBEAT_MS);
465
+ return new Response(readable, {
466
+ status: 200,
467
+ headers: {
468
+ "content-type": "text/event-stream",
469
+ "cache-control": "no-cache, no-transform",
470
+ "x-accel-buffering": "no",
471
+ },
472
+ });
473
+ }
474
+ systemHandler(method, segments, lower) {
475
+ const core = this.core;
476
+ if (lower[0] === "tenants") {
477
+ if (lower.length === 1 && method === "GET")
478
+ return { params: {}, run: () => core.listTenants() };
479
+ if (lower.length === 2) {
480
+ const params = { tenantId: segments[1] };
481
+ if (method === "POST")
482
+ return { params, run: (req) => core.registerTenant(req) };
483
+ if (method === "PUT")
484
+ return { params, run: (req) => core.updateTenant(req) };
485
+ if (method === "DELETE")
486
+ return { params, run: (req) => core.deleteTenant(req) };
487
+ }
488
+ }
489
+ if (lower[0] === "trusted-servers") {
490
+ if (lower.length === 1 && method === "GET")
491
+ return { params: {}, run: () => core.listTrustedServers() };
492
+ if (lower.length === 1 && method === "POST")
493
+ return { params: {}, run: (req) => core.addTrustedServer(req) };
494
+ if (lower.length === 2 && method === "DELETE") {
495
+ return { params: { serverName: segments[1] }, run: (req) => core.removeTrustedServer(req) };
496
+ }
497
+ }
498
+ if (lower[0] === "config") {
499
+ if (lower.length === 1 && method === "GET")
500
+ return { params: {}, run: () => core.getConfig() };
501
+ if (lower.length === 1 && method === "PUT")
502
+ return { params: {}, run: (req) => core.updateConfig(req) };
503
+ if (lower.length === 2 && lower[1] === "backups" && method === "GET") {
504
+ return { params: {}, run: () => core.listConfigBackups() };
505
+ }
506
+ if (lower.length === 3 && lower[1] === "backups" && method === "GET") {
507
+ return { params: { backupFile: segments[2] }, run: (req) => core.getConfigBackup(req) };
508
+ }
509
+ }
510
+ return null;
511
+ }
512
+ }
513
+ exports.MindooServerObject = MindooServerObject;
514
+ /** A request the body parser refused; carries the response to send. */
515
+ class ParsedRejection extends Error {
516
+ constructor(response) {
517
+ super("request rejected while parsing");
518
+ this.response = response;
519
+ }
520
+ }
521
+ //# sourceMappingURL=MindooServerObject.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MindooServerObject.js","sourceRoot":"","sources":["../../src/cloudflare/MindooServerObject.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { CryptoAdapter } from "../core/crypto/CryptoAdapter";
2
+ /** WebCrypto of the Workers runtime (`globalThis.crypto`). */
3
+ export declare class WorkersCryptoAdapter implements CryptoAdapter {
4
+ getSubtle(): SubtleCrypto;
5
+ getRandomValues(array: Uint8Array): Uint8Array;
6
+ }
7
+ //# sourceMappingURL=WorkersCryptoAdapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorkersCryptoAdapter.d.ts","sourceRoot":"","sources":["../../src/cloudflare/WorkersCryptoAdapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE,8DAA8D;AAC9D,qBAAa,oBAAqB,YAAW,aAAa;IACxD,SAAS,IAAI,YAAY;IAIzB,eAAe,CAAC,KAAK,EAAE,UAAU,GAAG,UAAU;CAG/C"}