society-protocol 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (271) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +111 -0
  3. package/dist/adapters.d.ts +101 -0
  4. package/dist/adapters.d.ts.map +1 -0
  5. package/dist/adapters.js +764 -0
  6. package/dist/adapters.js.map +1 -0
  7. package/dist/agents-md.d.ts +59 -0
  8. package/dist/agents-md.d.ts.map +1 -0
  9. package/dist/agents-md.js +204 -0
  10. package/dist/agents-md.js.map +1 -0
  11. package/dist/autoconfig.d.ts +137 -0
  12. package/dist/autoconfig.d.ts.map +1 -0
  13. package/dist/autoconfig.js +452 -0
  14. package/dist/autoconfig.js.map +1 -0
  15. package/dist/bootstrap.d.ts +68 -0
  16. package/dist/bootstrap.d.ts.map +1 -0
  17. package/dist/bootstrap.js +304 -0
  18. package/dist/bootstrap.js.map +1 -0
  19. package/dist/bridges/a2a-bridge.d.ts +156 -0
  20. package/dist/bridges/a2a-bridge.d.ts.map +1 -0
  21. package/dist/bridges/a2a-bridge.js +337 -0
  22. package/dist/bridges/a2a-bridge.js.map +1 -0
  23. package/dist/bridges/mcp-bridge.d.ts +87 -0
  24. package/dist/bridges/mcp-bridge.d.ts.map +1 -0
  25. package/dist/bridges/mcp-bridge.js +332 -0
  26. package/dist/bridges/mcp-bridge.js.map +1 -0
  27. package/dist/cache.d.ts +130 -0
  28. package/dist/cache.d.ts.map +1 -0
  29. package/dist/cache.js +257 -0
  30. package/dist/cache.js.map +1 -0
  31. package/dist/capsules.d.ts +23 -0
  32. package/dist/capsules.d.ts.map +1 -0
  33. package/dist/capsules.js +75 -0
  34. package/dist/capsules.js.map +1 -0
  35. package/dist/cli/commands.d.ts +8 -0
  36. package/dist/cli/commands.d.ts.map +1 -0
  37. package/dist/cli/commands.js +263 -0
  38. package/dist/cli/commands.js.map +1 -0
  39. package/dist/coc.d.ts +121 -0
  40. package/dist/coc.d.ts.map +1 -0
  41. package/dist/coc.js +629 -0
  42. package/dist/coc.js.map +1 -0
  43. package/dist/coc.test.d.ts +2 -0
  44. package/dist/coc.test.d.ts.map +1 -0
  45. package/dist/coc.test.js +80 -0
  46. package/dist/coc.test.js.map +1 -0
  47. package/dist/compression.d.ts +125 -0
  48. package/dist/compression.d.ts.map +1 -0
  49. package/dist/compression.js +573 -0
  50. package/dist/compression.js.map +1 -0
  51. package/dist/cot-stream.d.ts +220 -0
  52. package/dist/cot-stream.d.ts.map +1 -0
  53. package/dist/cot-stream.js +673 -0
  54. package/dist/cot-stream.js.map +1 -0
  55. package/dist/crypto-wasm.d.ts +100 -0
  56. package/dist/crypto-wasm.d.ts.map +1 -0
  57. package/dist/crypto-wasm.js +229 -0
  58. package/dist/crypto-wasm.js.map +1 -0
  59. package/dist/federation.d.ts +200 -0
  60. package/dist/federation.d.ts.map +1 -0
  61. package/dist/federation.js +691 -0
  62. package/dist/federation.js.map +1 -0
  63. package/dist/federation.test.d.ts +2 -0
  64. package/dist/federation.test.d.ts.map +1 -0
  65. package/dist/federation.test.js +71 -0
  66. package/dist/federation.test.js.map +1 -0
  67. package/dist/gateway/capability-router.d.ts +77 -0
  68. package/dist/gateway/capability-router.d.ts.map +1 -0
  69. package/dist/gateway/capability-router.js +222 -0
  70. package/dist/gateway/capability-router.js.map +1 -0
  71. package/dist/gateway/demand-spawner.d.ts +155 -0
  72. package/dist/gateway/demand-spawner.d.ts.map +1 -0
  73. package/dist/gateway/demand-spawner.js +426 -0
  74. package/dist/gateway/demand-spawner.js.map +1 -0
  75. package/dist/identity.d.ts +46 -0
  76. package/dist/identity.d.ts.map +1 -0
  77. package/dist/identity.js +102 -0
  78. package/dist/identity.js.map +1 -0
  79. package/dist/identity.test.d.ts +2 -0
  80. package/dist/identity.test.d.ts.map +1 -0
  81. package/dist/identity.test.js +45 -0
  82. package/dist/identity.test.js.map +1 -0
  83. package/dist/index.d.ts +36 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +1572 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/integration.d.ts +210 -0
  88. package/dist/integration.d.ts.map +1 -0
  89. package/dist/integration.js +1105 -0
  90. package/dist/integration.js.map +1 -0
  91. package/dist/integration.test.d.ts +2 -0
  92. package/dist/integration.test.d.ts.map +1 -0
  93. package/dist/integration.test.js +155 -0
  94. package/dist/integration.test.js.map +1 -0
  95. package/dist/knowledge.d.ts +219 -0
  96. package/dist/knowledge.d.ts.map +1 -0
  97. package/dist/knowledge.js +543 -0
  98. package/dist/knowledge.js.map +1 -0
  99. package/dist/knowledge.test.d.ts +2 -0
  100. package/dist/knowledge.test.d.ts.map +1 -0
  101. package/dist/knowledge.test.js +72 -0
  102. package/dist/knowledge.test.js.map +1 -0
  103. package/dist/latent-space.d.ts +178 -0
  104. package/dist/latent-space.d.ts.map +1 -0
  105. package/dist/latent-space.js +385 -0
  106. package/dist/latent-space.js.map +1 -0
  107. package/dist/lib.d.ts +30 -0
  108. package/dist/lib.d.ts.map +1 -0
  109. package/dist/lib.js +30 -0
  110. package/dist/lib.js.map +1 -0
  111. package/dist/mcp/server.d.ts +74 -0
  112. package/dist/mcp/server.d.ts.map +1 -0
  113. package/dist/mcp/server.js +1392 -0
  114. package/dist/mcp/server.js.map +1 -0
  115. package/dist/metrics.d.ts +98 -0
  116. package/dist/metrics.d.ts.map +1 -0
  117. package/dist/metrics.js +222 -0
  118. package/dist/metrics.js.map +1 -0
  119. package/dist/p2p.d.ts +87 -0
  120. package/dist/p2p.d.ts.map +1 -0
  121. package/dist/p2p.js +606 -0
  122. package/dist/p2p.js.map +1 -0
  123. package/dist/persona/capabilities.d.ts +17 -0
  124. package/dist/persona/capabilities.d.ts.map +1 -0
  125. package/dist/persona/capabilities.js +224 -0
  126. package/dist/persona/capabilities.js.map +1 -0
  127. package/dist/persona/domains.d.ts +22 -0
  128. package/dist/persona/domains.d.ts.map +1 -0
  129. package/dist/persona/domains.js +176 -0
  130. package/dist/persona/domains.js.map +1 -0
  131. package/dist/persona/embeddings.d.ts +40 -0
  132. package/dist/persona/embeddings.d.ts.map +1 -0
  133. package/dist/persona/embeddings.js +265 -0
  134. package/dist/persona/embeddings.js.map +1 -0
  135. package/dist/persona/engine.d.ts +79 -0
  136. package/dist/persona/engine.d.ts.map +1 -0
  137. package/dist/persona/engine.js +1087 -0
  138. package/dist/persona/engine.js.map +1 -0
  139. package/dist/persona/index.d.ts +11 -0
  140. package/dist/persona/index.d.ts.map +1 -0
  141. package/dist/persona/index.js +11 -0
  142. package/dist/persona/index.js.map +1 -0
  143. package/dist/persona/lifecycle.d.ts +17 -0
  144. package/dist/persona/lifecycle.d.ts.map +1 -0
  145. package/dist/persona/lifecycle.js +36 -0
  146. package/dist/persona/lifecycle.js.map +1 -0
  147. package/dist/persona/retrieval.d.ts +6 -0
  148. package/dist/persona/retrieval.d.ts.map +1 -0
  149. package/dist/persona/retrieval.js +122 -0
  150. package/dist/persona/retrieval.js.map +1 -0
  151. package/dist/persona/sync.d.ts +15 -0
  152. package/dist/persona/sync.d.ts.map +1 -0
  153. package/dist/persona/sync.js +92 -0
  154. package/dist/persona/sync.js.map +1 -0
  155. package/dist/persona/types.d.ts +283 -0
  156. package/dist/persona/types.d.ts.map +1 -0
  157. package/dist/persona/types.js +2 -0
  158. package/dist/persona/types.js.map +1 -0
  159. package/dist/persona/zkp/engine.d.ts +26 -0
  160. package/dist/persona/zkp/engine.d.ts.map +1 -0
  161. package/dist/persona/zkp/engine.js +370 -0
  162. package/dist/persona/zkp/engine.js.map +1 -0
  163. package/dist/persona/zkp/types.d.ts +39 -0
  164. package/dist/persona/zkp/types.d.ts.map +1 -0
  165. package/dist/persona/zkp/types.js +2 -0
  166. package/dist/persona/zkp/types.js.map +1 -0
  167. package/dist/planner.d.ts +114 -0
  168. package/dist/planner.d.ts.map +1 -0
  169. package/dist/planner.js +522 -0
  170. package/dist/planner.js.map +1 -0
  171. package/dist/proactive/checkpoints.d.ts +9 -0
  172. package/dist/proactive/checkpoints.d.ts.map +1 -0
  173. package/dist/proactive/checkpoints.js +20 -0
  174. package/dist/proactive/checkpoints.js.map +1 -0
  175. package/dist/proactive/engine.d.ts +59 -0
  176. package/dist/proactive/engine.d.ts.map +1 -0
  177. package/dist/proactive/engine.js +406 -0
  178. package/dist/proactive/engine.js.map +1 -0
  179. package/dist/proactive/scheduler.d.ts +11 -0
  180. package/dist/proactive/scheduler.d.ts.map +1 -0
  181. package/dist/proactive/scheduler.js +45 -0
  182. package/dist/proactive/scheduler.js.map +1 -0
  183. package/dist/proactive/swarm-controller.d.ts +189 -0
  184. package/dist/proactive/swarm-controller.d.ts.map +1 -0
  185. package/dist/proactive/swarm-controller.js +477 -0
  186. package/dist/proactive/swarm-controller.js.map +1 -0
  187. package/dist/proactive/swarm-registry.d.ts +13 -0
  188. package/dist/proactive/swarm-registry.d.ts.map +1 -0
  189. package/dist/proactive/swarm-registry.js +122 -0
  190. package/dist/proactive/swarm-registry.js.map +1 -0
  191. package/dist/proactive/types.d.ts +145 -0
  192. package/dist/proactive/types.d.ts.map +1 -0
  193. package/dist/proactive/types.js +25 -0
  194. package/dist/proactive/types.js.map +1 -0
  195. package/dist/registry.d.ts +35 -0
  196. package/dist/registry.d.ts.map +1 -0
  197. package/dist/registry.js +88 -0
  198. package/dist/registry.js.map +1 -0
  199. package/dist/reputation.d.ts +123 -0
  200. package/dist/reputation.d.ts.map +1 -0
  201. package/dist/reputation.js +366 -0
  202. package/dist/reputation.js.map +1 -0
  203. package/dist/reputation.test.d.ts +5 -0
  204. package/dist/reputation.test.d.ts.map +1 -0
  205. package/dist/reputation.test.js +265 -0
  206. package/dist/reputation.test.js.map +1 -0
  207. package/dist/rooms.d.ts +96 -0
  208. package/dist/rooms.d.ts.map +1 -0
  209. package/dist/rooms.js +410 -0
  210. package/dist/rooms.js.map +1 -0
  211. package/dist/sdk/client.d.ts +290 -0
  212. package/dist/sdk/client.d.ts.map +1 -0
  213. package/dist/sdk/client.js +1287 -0
  214. package/dist/sdk/client.js.map +1 -0
  215. package/dist/sdk/index.d.ts +32 -0
  216. package/dist/sdk/index.d.ts.map +1 -0
  217. package/dist/sdk/index.js +70 -0
  218. package/dist/sdk/index.js.map +1 -0
  219. package/dist/security.d.ts +230 -0
  220. package/dist/security.d.ts.map +1 -0
  221. package/dist/security.js +652 -0
  222. package/dist/security.js.map +1 -0
  223. package/dist/skills/engine.d.ts +262 -0
  224. package/dist/skills/engine.d.ts.map +1 -0
  225. package/dist/skills/engine.js +788 -0
  226. package/dist/skills/engine.js.map +1 -0
  227. package/dist/skills/engine.test.d.ts +2 -0
  228. package/dist/skills/engine.test.d.ts.map +1 -0
  229. package/dist/skills/engine.test.js +134 -0
  230. package/dist/skills/engine.test.js.map +1 -0
  231. package/dist/skills/parser.d.ts +129 -0
  232. package/dist/skills/parser.d.ts.map +1 -0
  233. package/dist/skills/parser.js +318 -0
  234. package/dist/skills/parser.js.map +1 -0
  235. package/dist/social.d.ts +149 -0
  236. package/dist/social.d.ts.map +1 -0
  237. package/dist/social.js +401 -0
  238. package/dist/social.js.map +1 -0
  239. package/dist/storage-optimized.d.ts +116 -0
  240. package/dist/storage-optimized.d.ts.map +1 -0
  241. package/dist/storage-optimized.js +264 -0
  242. package/dist/storage-optimized.js.map +1 -0
  243. package/dist/storage.d.ts +584 -0
  244. package/dist/storage.d.ts.map +1 -0
  245. package/dist/storage.js +2703 -0
  246. package/dist/storage.js.map +1 -0
  247. package/dist/storage.test.d.ts +2 -0
  248. package/dist/storage.test.d.ts.map +1 -0
  249. package/dist/storage.test.js +78 -0
  250. package/dist/storage.test.js.map +1 -0
  251. package/dist/swp.d.ts +443 -0
  252. package/dist/swp.d.ts.map +1 -0
  253. package/dist/swp.js +223 -0
  254. package/dist/swp.js.map +1 -0
  255. package/dist/swp.test.d.ts +5 -0
  256. package/dist/swp.test.d.ts.map +1 -0
  257. package/dist/swp.test.js +127 -0
  258. package/dist/swp.test.js.map +1 -0
  259. package/dist/templates.d.ts +25 -0
  260. package/dist/templates.d.ts.map +1 -0
  261. package/dist/templates.js +1048 -0
  262. package/dist/templates.js.map +1 -0
  263. package/dist/test-e2e.d.ts +14 -0
  264. package/dist/test-e2e.d.ts.map +1 -0
  265. package/dist/test-e2e.js +266 -0
  266. package/dist/test-e2e.js.map +1 -0
  267. package/dist/workers/research-worker.d.ts +19 -0
  268. package/dist/workers/research-worker.d.ts.map +1 -0
  269. package/dist/workers/research-worker.js +141 -0
  270. package/dist/workers/research-worker.js.map +1 -0
  271. package/package.json +110 -0
@@ -0,0 +1,116 @@
1
+ /**
2
+ * Society Protocol - Optimized Storage Layer
3
+ *
4
+ * Batched writes, connection pooling, and query optimization.
5
+ * Reduces SQLite lock contention and improves throughput.
6
+ */
7
+ import { Storage } from './storage.js';
8
+ import { EventEmitter } from 'events';
9
+ export interface BatchedOperation<T> {
10
+ execute: () => T;
11
+ resolve: (value: T) => void;
12
+ reject: (error: Error) => void;
13
+ }
14
+ export interface OptimizedStorageOptions {
15
+ batchIntervalMs?: number;
16
+ maxBatchSize?: number;
17
+ maxQueueSize?: number;
18
+ enablePooling?: boolean;
19
+ }
20
+ /**
21
+ * Optimized storage with batching and pooling
22
+ */
23
+ export declare class OptimizedStorage extends EventEmitter {
24
+ private storage;
25
+ private writeQueue;
26
+ private batchIntervalMs;
27
+ private maxBatchSize;
28
+ private maxQueueSize;
29
+ private isProcessing;
30
+ private batchTimer?;
31
+ private stats;
32
+ constructor(storage: Storage, options?: OptimizedStorageOptions);
33
+ /**
34
+ * Queue a write operation for batching
35
+ */
36
+ queueWrite<T>(execute: () => T): Promise<T>;
37
+ /**
38
+ * Immediate write ( bypass batching )
39
+ */
40
+ immediateWrite<T>(execute: () => T): T;
41
+ /**
42
+ * Process batched writes
43
+ */
44
+ private processBatch;
45
+ /**
46
+ * Force immediate processing of pending writes
47
+ */
48
+ flush(): Promise<void>;
49
+ /**
50
+ * Get queue length
51
+ */
52
+ get queueLength(): number;
53
+ /**
54
+ * Get statistics
55
+ */
56
+ getStats(): {
57
+ batchedWrites: number;
58
+ immediateWrites: number;
59
+ queuedWrites: number;
60
+ droppedWrites: number;
61
+ batchErrors: number;
62
+ };
63
+ /**
64
+ * Reset statistics
65
+ */
66
+ resetStats(): void;
67
+ /**
68
+ * Destroy and cleanup
69
+ */
70
+ destroy(): void;
71
+ }
72
+ /**
73
+ * Connection pool for parallel reads
74
+ */
75
+ export declare class StoragePool extends EventEmitter {
76
+ private connections;
77
+ private available;
78
+ private pending;
79
+ private maxConnections;
80
+ constructor(dbPath: string, maxConnections?: number);
81
+ /**
82
+ * Acquire a connection from the pool
83
+ */
84
+ acquire(): Promise<Storage>;
85
+ /**
86
+ * Release a connection back to the pool
87
+ */
88
+ release(storage: Storage): void;
89
+ /**
90
+ * Execute with automatic acquire/release
91
+ */
92
+ execute<T>(fn: (storage: Storage) => Promise<T>): Promise<T>;
93
+ /**
94
+ * Close all connections
95
+ */
96
+ close(): void;
97
+ }
98
+ /**
99
+ * Query builder for optimized queries
100
+ */
101
+ export declare class QueryBuilder {
102
+ private conditions;
103
+ private params;
104
+ private orderByClause?;
105
+ private limitClause?;
106
+ private offsetClause?;
107
+ where(condition: string, ...params: any[]): this;
108
+ orderBy(column: string, direction?: 'ASC' | 'DESC'): this;
109
+ limit(n: number): this;
110
+ offset(n: number): this;
111
+ build(): {
112
+ sql: string;
113
+ params: any[];
114
+ };
115
+ }
116
+ //# sourceMappingURL=storage-optimized.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-optimized.d.ts","sourceRoot":"","sources":["../src/storage-optimized.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,gBAAgB,CAAC,CAAC;IAC/B,OAAO,EAAE,MAAM,CAAC,CAAC;IACjB,OAAO,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;IAC5B,MAAM,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,uBAAuB;IACpC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAC9C,OAAO,CAAC,OAAO,CAAU;IACzB,OAAO,CAAC,UAAU,CAA+B;IACjD,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAC,CAAiB;IACpC,OAAO,CAAC,KAAK,CAMX;gBAEU,OAAO,EAAE,OAAO,EAAE,OAAO,GAAE,uBAA4B;IAQnE;;OAEG;IACG,UAAU,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAuBjD;;OAEG;IACH,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC;IAKtC;;OAEG;YACW,YAAY;IA6C1B;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B;;OAEG;IACH,IAAI,WAAW,IAAI,MAAM,CAExB;IAED;;OAEG;IACH,QAAQ;;;;;;;IAIR;;OAEG;IACH,UAAU,IAAI,IAAI;IAUlB;;OAEG;IACH,OAAO,IAAI,IAAI;CAQlB;AAED;;GAEG;AACH,qBAAa,WAAY,SAAQ,YAAY;IACzC,OAAO,CAAC,WAAW,CAAiB;IACpC,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,OAAO,CAAyC;IACxD,OAAO,CAAC,cAAc,CAAS;gBAEnB,MAAM,EAAE,MAAM,EAAE,cAAc,GAAE,MAAU;IAYtD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC;IAWjC;;OAEG;IACH,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAS/B;;OAEG;IACG,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IASlE;;OAEG;IACH,KAAK,IAAI,IAAI;CAUhB;AAED;;GAEG;AACH,qBAAa,YAAY;IACrB,OAAO,CAAC,UAAU,CAAgB;IAClC,OAAO,CAAC,MAAM,CAAa;IAC3B,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,WAAW,CAAC,CAAS;IAC7B,OAAO,CAAC,YAAY,CAAC,CAAS;IAE9B,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,GAAG,EAAE,GAAG,IAAI;IAMhD,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,GAAE,KAAK,GAAG,MAAc,GAAG,IAAI;IAKhE,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKtB,MAAM,CAAC,CAAC,EAAE,MAAM,GAAG,IAAI;IAKvB,KAAK,IAAI;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,EAAE,CAAA;KAAE;CAqB1C"}
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Society Protocol - Optimized Storage Layer
3
+ *
4
+ * Batched writes, connection pooling, and query optimization.
5
+ * Reduces SQLite lock contention and improves throughput.
6
+ */
7
+ import { Storage } from './storage.js';
8
+ import { EventEmitter } from 'events';
9
+ /**
10
+ * Optimized storage with batching and pooling
11
+ */
12
+ export class OptimizedStorage extends EventEmitter {
13
+ storage;
14
+ writeQueue = [];
15
+ batchIntervalMs;
16
+ maxBatchSize;
17
+ maxQueueSize;
18
+ isProcessing = false;
19
+ batchTimer;
20
+ stats = {
21
+ batchedWrites: 0,
22
+ immediateWrites: 0,
23
+ queuedWrites: 0,
24
+ droppedWrites: 0,
25
+ batchErrors: 0,
26
+ };
27
+ constructor(storage, options = {}) {
28
+ super();
29
+ this.storage = storage;
30
+ this.batchIntervalMs = options.batchIntervalMs ?? 10;
31
+ this.maxBatchSize = options.maxBatchSize ?? 100;
32
+ this.maxQueueSize = options.maxQueueSize ?? 1000;
33
+ }
34
+ /**
35
+ * Queue a write operation for batching
36
+ */
37
+ async queueWrite(execute) {
38
+ // Check queue capacity
39
+ if (this.writeQueue.length >= this.maxQueueSize) {
40
+ this.stats.droppedWrites++;
41
+ throw new Error('Write queue full');
42
+ }
43
+ return new Promise((resolve, reject) => {
44
+ this.writeQueue.push({ execute, resolve, reject });
45
+ this.stats.queuedWrites++;
46
+ // Schedule batch processing
47
+ if (!this.isProcessing && !this.batchTimer) {
48
+ this.batchTimer = setTimeout(() => this.processBatch(), this.batchIntervalMs);
49
+ }
50
+ // Process immediately if queue is large
51
+ if (this.writeQueue.length >= this.maxBatchSize) {
52
+ this.processBatch();
53
+ }
54
+ });
55
+ }
56
+ /**
57
+ * Immediate write ( bypass batching )
58
+ */
59
+ immediateWrite(execute) {
60
+ this.stats.immediateWrites++;
61
+ return this.storage.transaction(execute);
62
+ }
63
+ /**
64
+ * Process batched writes
65
+ */
66
+ async processBatch() {
67
+ if (this.isProcessing || this.writeQueue.length === 0)
68
+ return;
69
+ this.isProcessing = true;
70
+ if (this.batchTimer) {
71
+ clearTimeout(this.batchTimer);
72
+ this.batchTimer = undefined;
73
+ }
74
+ // Take batch from queue
75
+ const batch = this.writeQueue.splice(0, this.maxBatchSize);
76
+ try {
77
+ // Execute in single transaction
78
+ this.storage.transaction(() => {
79
+ for (const op of batch) {
80
+ try {
81
+ const result = op.execute();
82
+ op.resolve(result);
83
+ }
84
+ catch (error) {
85
+ op.reject(error);
86
+ }
87
+ }
88
+ });
89
+ this.stats.batchedWrites += batch.length;
90
+ this.emit('batch:success', batch.length);
91
+ }
92
+ catch (error) {
93
+ this.stats.batchErrors++;
94
+ // Reject all operations in batch
95
+ for (const op of batch) {
96
+ op.reject(error);
97
+ }
98
+ this.emit('batch:error', error);
99
+ }
100
+ finally {
101
+ this.isProcessing = false;
102
+ // Schedule next batch if queue not empty
103
+ if (this.writeQueue.length > 0) {
104
+ this.batchTimer = setTimeout(() => this.processBatch(), this.batchIntervalMs);
105
+ }
106
+ }
107
+ }
108
+ /**
109
+ * Force immediate processing of pending writes
110
+ */
111
+ async flush() {
112
+ while (this.writeQueue.length > 0) {
113
+ await this.processBatch();
114
+ }
115
+ }
116
+ /**
117
+ * Get queue length
118
+ */
119
+ get queueLength() {
120
+ return this.writeQueue.length;
121
+ }
122
+ /**
123
+ * Get statistics
124
+ */
125
+ getStats() {
126
+ return { ...this.stats };
127
+ }
128
+ /**
129
+ * Reset statistics
130
+ */
131
+ resetStats() {
132
+ this.stats = {
133
+ batchedWrites: 0,
134
+ immediateWrites: 0,
135
+ queuedWrites: 0,
136
+ droppedWrites: 0,
137
+ batchErrors: 0,
138
+ };
139
+ }
140
+ /**
141
+ * Destroy and cleanup
142
+ */
143
+ destroy() {
144
+ this.flush();
145
+ if (this.batchTimer) {
146
+ clearTimeout(this.batchTimer);
147
+ this.batchTimer = undefined;
148
+ }
149
+ this.removeAllListeners();
150
+ }
151
+ }
152
+ /**
153
+ * Connection pool for parallel reads
154
+ */
155
+ export class StoragePool extends EventEmitter {
156
+ connections = [];
157
+ available = [];
158
+ pending = [];
159
+ maxConnections;
160
+ constructor(dbPath, maxConnections = 5) {
161
+ super();
162
+ this.maxConnections = maxConnections;
163
+ // Create initial connections
164
+ for (let i = 0; i < maxConnections; i++) {
165
+ const storage = new Storage({ dbPath });
166
+ this.connections.push(storage);
167
+ this.available.push(storage);
168
+ }
169
+ }
170
+ /**
171
+ * Acquire a connection from the pool
172
+ */
173
+ async acquire() {
174
+ if (this.available.length > 0) {
175
+ return this.available.pop();
176
+ }
177
+ // Wait for available connection
178
+ return new Promise((resolve) => {
179
+ this.pending.push(resolve);
180
+ });
181
+ }
182
+ /**
183
+ * Release a connection back to the pool
184
+ */
185
+ release(storage) {
186
+ if (this.pending.length > 0) {
187
+ const resolve = this.pending.shift();
188
+ resolve(storage);
189
+ }
190
+ else {
191
+ this.available.push(storage);
192
+ }
193
+ }
194
+ /**
195
+ * Execute with automatic acquire/release
196
+ */
197
+ async execute(fn) {
198
+ const storage = await this.acquire();
199
+ try {
200
+ return await fn(storage);
201
+ }
202
+ finally {
203
+ this.release(storage);
204
+ }
205
+ }
206
+ /**
207
+ * Close all connections
208
+ */
209
+ close() {
210
+ for (const storage of this.connections) {
211
+ try {
212
+ storage.db.close();
213
+ }
214
+ catch { }
215
+ }
216
+ this.connections = [];
217
+ this.available = [];
218
+ this.pending = [];
219
+ }
220
+ }
221
+ /**
222
+ * Query builder for optimized queries
223
+ */
224
+ export class QueryBuilder {
225
+ conditions = [];
226
+ params = [];
227
+ orderByClause;
228
+ limitClause;
229
+ offsetClause;
230
+ where(condition, ...params) {
231
+ this.conditions.push(condition);
232
+ this.params.push(...params);
233
+ return this;
234
+ }
235
+ orderBy(column, direction = 'ASC') {
236
+ this.orderByClause = `${column} ${direction}`;
237
+ return this;
238
+ }
239
+ limit(n) {
240
+ this.limitClause = n;
241
+ return this;
242
+ }
243
+ offset(n) {
244
+ this.offsetClause = n;
245
+ return this;
246
+ }
247
+ build() {
248
+ let sql = 'SELECT * FROM data';
249
+ if (this.conditions.length > 0) {
250
+ sql += ' WHERE ' + this.conditions.join(' AND ');
251
+ }
252
+ if (this.orderByClause) {
253
+ sql += ' ORDER BY ' + this.orderByClause;
254
+ }
255
+ if (this.limitClause) {
256
+ sql += ` LIMIT ${this.limitClause}`;
257
+ }
258
+ if (this.offsetClause) {
259
+ sql += ` OFFSET ${this.offsetClause}`;
260
+ }
261
+ return { sql, params: this.params };
262
+ }
263
+ }
264
+ //# sourceMappingURL=storage-optimized.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage-optimized.js","sourceRoot":"","sources":["../src/storage-optimized.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAetC;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IACtC,OAAO,CAAU;IACjB,UAAU,GAA4B,EAAE,CAAC;IACzC,eAAe,CAAS;IACxB,YAAY,CAAS;IACrB,YAAY,CAAS;IACrB,YAAY,GAAG,KAAK,CAAC;IACrB,UAAU,CAAkB;IAC5B,KAAK,GAAG;QACZ,aAAa,EAAE,CAAC;QAChB,eAAe,EAAE,CAAC;QAClB,YAAY,EAAE,CAAC;QACf,aAAa,EAAE,CAAC;QAChB,WAAW,EAAE,CAAC;KACjB,CAAC;IAEF,YAAY,OAAgB,EAAE,UAAmC,EAAE;QAC/D,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC;QACrD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,GAAG,CAAC;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;IACrD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CAAI,OAAgB;QAChC,uBAAuB;QACvB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;YACnD,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAE1B,4BAA4B;YAC5B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBACzC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAClF,CAAC;YAED,wCAAwC;YACxC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC9C,IAAI,CAAC,YAAY,EAAE,CAAC;YACxB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,cAAc,CAAI,OAAgB;QAC9B,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,YAAY;QACtB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAE9D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;QAED,wBAAwB;QACxB,MAAM,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3D,IAAI,CAAC;YACD,gCAAgC;YAChC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE;gBAC1B,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;oBACrB,IAAI,CAAC;wBACD,MAAM,MAAM,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;wBAC5B,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACvB,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACb,EAAE,CAAC,MAAM,CAAC,KAAc,CAAC,CAAC;oBAC9B,CAAC;gBACL,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,MAAM,CAAC;YACzC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YACzB,iCAAiC;YACjC,KAAK,MAAM,EAAE,IAAI,KAAK,EAAE,CAAC;gBACrB,EAAE,CAAC,MAAM,CAAC,KAAc,CAAC,CAAC;YAC9B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACpC,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAE1B,yCAAyC;YACzC,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK;QACP,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,QAAQ;QACJ,OAAO,EAAE,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,UAAU;QACN,IAAI,CAAC,KAAK,GAAG;YACT,aAAa,EAAE,CAAC;YAChB,eAAe,EAAE,CAAC;YAClB,YAAY,EAAE,CAAC;YACf,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,CAAC;SACjB,CAAC;IACN,CAAC;IAED;;OAEG;IACH,OAAO;QACH,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YAC9B,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAChC,CAAC;QACD,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC9B,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,WAAY,SAAQ,YAAY;IACjC,WAAW,GAAc,EAAE,CAAC;IAC5B,SAAS,GAAc,EAAE,CAAC;IAC1B,OAAO,GAAsC,EAAE,CAAC;IAChD,cAAc,CAAS;IAE/B,YAAY,MAAc,EAAE,iBAAyB,CAAC;QAClD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QAErC,6BAA6B;QAC7B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,cAAc,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;YACxC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACT,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAG,CAAC;QACjC,CAAC;QAED,gCAAgC;QAChC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,OAAgB;QACpB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,EAAG,CAAC;YACtC,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO,CAAI,EAAoC;QACjD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrC,IAAI,CAAC;YACD,OAAO,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;gBAAS,CAAC;YACP,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC1B,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK;QACD,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrC,IAAI,CAAC;gBACD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;YACvB,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACd,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;IACtB,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,YAAY;IACb,UAAU,GAAa,EAAE,CAAC;IAC1B,MAAM,GAAU,EAAE,CAAC;IACnB,aAAa,CAAU;IACvB,WAAW,CAAU;IACrB,YAAY,CAAU;IAE9B,KAAK,CAAC,SAAiB,EAAE,GAAG,MAAa;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,MAAc,EAAE,YAA4B,KAAK;QACrD,IAAI,CAAC,aAAa,GAAG,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC;QAC9C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK,CAAC,CAAS;QACX,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,CAAS;QACZ,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,GAAG,GAAG,oBAAoB,CAAC;QAE/B,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACrD,CAAC;QAED,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,GAAG,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC;QAC7C,CAAC;QAED,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,GAAG,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,GAAG,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,CAAC;QAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC;IACxC,CAAC;CACJ"}