@archlast/server 0.1.8 → 0.1.9

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 (347) hide show
  1. package/README.md +104 -100
  2. package/dist/admin/auth.d.ts +24 -5
  3. package/dist/admin/auth.js +49 -25
  4. package/dist/admin/schema.d.ts +122 -32
  5. package/dist/admin/schema.js +131 -95
  6. package/dist/admin/seed.d.ts +1 -1
  7. package/dist/admin/seed.js +79 -47
  8. package/dist/auth/api-key-resolver.d.ts +1 -1
  9. package/dist/auth/api-key-resolver.js +7 -3
  10. package/dist/auth/archlast-auth-adapter.d.ts +2 -5
  11. package/dist/auth/archlast-auth-adapter.js +1 -1
  12. package/dist/auth/better-auth-adapter.d.ts.map +1 -1
  13. package/dist/auth/better-auth-adapter.js +41 -26
  14. package/dist/auth/better-auth-adapter.js.map +1 -1
  15. package/dist/auth/better-auth-admin.d.ts.map +1 -1
  16. package/dist/auth/better-auth-admin.js +1 -1
  17. package/dist/auth/better-auth-admin.js.map +1 -1
  18. package/dist/auth/better-auth-api-key-resolver.js +1 -1
  19. package/dist/auth/better-auth-api-key-resolver.js.map +1 -1
  20. package/dist/auth/better-auth-instance.d.ts +249 -301
  21. package/dist/auth/better-auth-instance.d.ts.map +1 -1
  22. package/dist/auth/better-auth-instance.js +11 -0
  23. package/dist/auth/better-auth-instance.js.map +1 -1
  24. package/dist/auth/better-auth-seed.d.ts +5 -2
  25. package/dist/auth/better-auth-seed.js +31 -22
  26. package/dist/auth/better-auth-session-adapter.d.ts.map +1 -1
  27. package/dist/auth/better-auth-session-adapter.js +14 -10
  28. package/dist/auth/better-auth-session-adapter.js.map +1 -1
  29. package/dist/auth/errors.d.ts.map +1 -1
  30. package/dist/auth/errors.js +11 -11
  31. package/dist/auth/errors.js.map +1 -1
  32. package/dist/auth/oauth-proxy.d.ts +5 -2
  33. package/dist/auth/oauth-proxy.js +23 -27
  34. package/dist/auth/resolver.d.ts.map +1 -1
  35. package/dist/auth/resolver.js.map +1 -1
  36. package/dist/auth/role-helpers.d.ts +1 -1
  37. package/dist/auth/role-helpers.d.ts.map +1 -1
  38. package/dist/auth/role-helpers.js.map +1 -1
  39. package/dist/auth/session-manager.d.ts +2 -5
  40. package/dist/auth/session-manager.js +16 -6
  41. package/dist/auth/system/better-auth-schema.d.ts.map +1 -1
  42. package/dist/auth/system/better-auth-schema.js +6 -23
  43. package/dist/auth/system/better-auth-schema.js.map +1 -1
  44. package/dist/cache/circuit-breaker.d.ts +81 -0
  45. package/dist/cache/circuit-breaker.d.ts.map +1 -0
  46. package/dist/cache/circuit-breaker.js +170 -0
  47. package/dist/cache/circuit-breaker.js.map +1 -0
  48. package/dist/cache/client.d.ts +6 -3
  49. package/dist/cache/client.d.ts.map +1 -1
  50. package/dist/cache/client.js +12 -53
  51. package/dist/cache/client.js.map +1 -1
  52. package/dist/cache/index.d.ts +2 -0
  53. package/dist/cache/index.d.ts.map +1 -1
  54. package/dist/cache/index.js +5 -1
  55. package/dist/cache/index.js.map +1 -1
  56. package/dist/cache/invalidation-queue.d.ts +63 -0
  57. package/dist/cache/invalidation-queue.d.ts.map +1 -0
  58. package/dist/cache/invalidation-queue.js +196 -0
  59. package/dist/cache/invalidation-queue.js.map +1 -0
  60. package/dist/cache/layers.d.ts +14 -4
  61. package/dist/cache/layers.d.ts.map +1 -1
  62. package/dist/cache/layers.js +66 -72
  63. package/dist/cache/layers.js.map +1 -1
  64. package/dist/cache/manager.d.ts.map +1 -1
  65. package/dist/cache/manager.js +6 -41
  66. package/dist/cache/manager.js.map +1 -1
  67. package/dist/cache/protocol.d.ts +4 -39
  68. package/dist/cache/protocol.d.ts.map +1 -1
  69. package/dist/cache/protocol.js.map +1 -1
  70. package/dist/cache/redis-adapter.d.ts +103 -0
  71. package/dist/cache/redis-adapter.d.ts.map +1 -0
  72. package/dist/cache/redis-adapter.js +424 -0
  73. package/dist/cache/redis-adapter.js.map +1 -0
  74. package/dist/cache/run-sidecar.js +10 -1
  75. package/dist/cache/run-sidecar.js.map +1 -1
  76. package/dist/cache/sidecar-server.d.ts +51 -1
  77. package/dist/cache/sidecar-server.d.ts.map +1 -1
  78. package/dist/cache/sidecar-server.js +368 -22
  79. package/dist/cache/sidecar-server.js.map +1 -1
  80. package/dist/cache/store.d.ts +43 -0
  81. package/dist/cache/store.d.ts.map +1 -1
  82. package/dist/cache/store.js +69 -76
  83. package/dist/cache/store.js.map +1 -1
  84. package/dist/cache/strategies.d.ts +2 -9
  85. package/dist/cache/strategies.d.ts.map +1 -1
  86. package/dist/cache/types.d.ts +130 -0
  87. package/dist/cache/types.d.ts.map +1 -0
  88. package/dist/cache/types.js +60 -0
  89. package/dist/cache/types.js.map +1 -0
  90. package/dist/config/bullmq.d.ts +16 -0
  91. package/dist/config/bullmq.d.ts.map +1 -0
  92. package/dist/config/bullmq.js +103 -0
  93. package/dist/config/bullmq.js.map +1 -0
  94. package/dist/config/index.d.ts +1 -0
  95. package/dist/config/index.d.ts.map +1 -1
  96. package/dist/config/index.js +1 -0
  97. package/dist/config/index.js.map +1 -1
  98. package/dist/config/schema.d.ts +80 -6
  99. package/dist/config/schema.d.ts.map +1 -1
  100. package/dist/config/schema.js +71 -6
  101. package/dist/config/schema.js.map +1 -1
  102. package/dist/config/service.d.ts +54 -4
  103. package/dist/config/service.d.ts.map +1 -1
  104. package/dist/config/service.js +56 -2
  105. package/dist/config/service.js.map +1 -1
  106. package/dist/controllers/admin/admin-tokens.controller.d.ts +131 -115
  107. package/dist/controllers/admin/admin-tokens.controller.js +117 -98
  108. package/dist/controllers/admin/api-keys.controller.d.ts +1 -1
  109. package/dist/controllers/admin/api-keys.controller.d.ts.map +1 -1
  110. package/dist/controllers/admin/api-keys.controller.js.map +1 -1
  111. package/dist/controllers/admin/app-users.controller.d.ts +274 -243
  112. package/dist/controllers/admin/app-users.controller.js +301 -257
  113. package/dist/controllers/admin/auth.controller.d.ts +260 -236
  114. package/dist/controllers/admin/auth.controller.js +197 -174
  115. package/dist/controllers/admin/backup.controller.d.ts.map +1 -1
  116. package/dist/controllers/admin/backup.controller.js.map +1 -1
  117. package/dist/controllers/admin/settings.controller.d.ts +1 -1
  118. package/dist/controllers/admin/storage-stats.controller.d.ts +63 -0
  119. package/dist/controllers/admin/storage-stats.controller.d.ts.map +1 -0
  120. package/dist/controllers/admin/storage-stats.controller.js +33 -0
  121. package/dist/controllers/admin/storage-stats.controller.js.map +1 -0
  122. package/dist/controllers/admin/tenants.controller.d.ts.map +1 -1
  123. package/dist/controllers/admin/tenants.controller.js.map +1 -1
  124. package/dist/controllers/admin/users.controller.d.ts +1 -1
  125. package/dist/controllers/admin/users.controller.d.ts.map +1 -1
  126. package/dist/controllers/admin/users.controller.js.map +1 -1
  127. package/dist/controllers/auth.controller.d.ts +289 -271
  128. package/dist/controllers/auth.controller.js +275 -226
  129. package/dist/controllers/crud-generator.controller.d.ts.map +1 -1
  130. package/dist/controllers/crud-generator.controller.js +127 -125
  131. package/dist/controllers/crud-generator.controller.js.map +1 -1
  132. package/dist/controllers/index.d.ts +1 -1
  133. package/dist/controllers/index.d.ts.map +1 -1
  134. package/dist/controllers/index.js.map +1 -1
  135. package/dist/controllers/introspection.controller.d.ts +642 -0
  136. package/dist/controllers/introspection.controller.d.ts.map +1 -1
  137. package/dist/controllers/introspection.controller.js +611 -0
  138. package/dist/controllers/introspection.controller.js.map +1 -1
  139. package/dist/controllers/invite.controller.d.ts +190 -170
  140. package/dist/controllers/invite.controller.js +183 -164
  141. package/dist/controllers/mfa.controller.d.ts +205 -183
  142. package/dist/controllers/mfa.controller.js +131 -111
  143. package/dist/controllers/otp.controller.d.ts +194 -171
  144. package/dist/controllers/otp.controller.js +192 -175
  145. package/dist/controllers/storage.controller.d.ts.map +1 -1
  146. package/dist/controllers/storage.controller.js.map +1 -1
  147. package/dist/controllers/system.controller.d.ts +5 -3
  148. package/dist/controllers/system.controller.d.ts.map +1 -1
  149. package/dist/controllers/system.controller.js +4 -2
  150. package/dist/controllers/system.controller.js.map +1 -1
  151. package/dist/controllers/tenant.controller.d.ts +258 -227
  152. package/dist/controllers/tenant.controller.js +224 -200
  153. package/dist/db/cachedclient.d.ts +6 -11
  154. package/dist/db/cachedclient.d.ts.map +1 -1
  155. package/dist/db/cachedclient.js +79 -43
  156. package/dist/db/cachedclient.js.map +1 -1
  157. package/dist/db/distributed-client.d.ts +79 -24
  158. package/dist/db/distributed-client.js +23 -24
  159. package/dist/db/factory.d.ts +3 -8
  160. package/dist/db/factory.d.ts.map +1 -1
  161. package/dist/db/factory.js +3 -22
  162. package/dist/db/factory.js.map +1 -1
  163. package/dist/db/socket-client.d.ts +7 -0
  164. package/dist/db/socket-client.d.ts.map +1 -1
  165. package/dist/db/socket-client.js +140 -11
  166. package/dist/db/socket-client.js.map +1 -1
  167. package/dist/deployment/handler.d.ts +10 -2
  168. package/dist/deployment/handler.d.ts.map +1 -1
  169. package/dist/deployment/handler.js +70 -15
  170. package/dist/deployment/handler.js.map +1 -1
  171. package/dist/deployment/persistence.d.ts.map +1 -1
  172. package/dist/deployment/persistence.js +6 -1
  173. package/dist/deployment/persistence.js.map +1 -1
  174. package/dist/docker/compose.d.ts.map +1 -1
  175. package/dist/docker/compose.js +76 -0
  176. package/dist/docker/compose.js.map +1 -1
  177. package/dist/engine/runner.d.ts.map +1 -1
  178. package/dist/engine/runner.js +0 -43
  179. package/dist/engine/runner.js.map +1 -1
  180. package/dist/functions/built-in/auth-apikey.d.ts.map +1 -1
  181. package/dist/functions/built-in/auth-apikey.js.map +1 -1
  182. package/dist/functions/built-in/system-cache.d.ts.map +1 -1
  183. package/dist/functions/built-in/system-cache.js +6 -31
  184. package/dist/functions/built-in/system-cache.js.map +1 -1
  185. package/dist/functions/built-in/system-data.d.ts.map +1 -1
  186. package/dist/functions/built-in/system-data.js +4 -2
  187. package/dist/functions/built-in/system-data.js.map +1 -1
  188. package/dist/functions/definition.d.ts.map +1 -1
  189. package/dist/functions/definition.js +6 -2
  190. package/dist/functions/definition.js.map +1 -1
  191. package/dist/http/routes/metrics.d.ts +42 -0
  192. package/dist/http/routes/metrics.d.ts.map +1 -0
  193. package/dist/http/routes/metrics.js +29 -0
  194. package/dist/http/routes/metrics.js.map +1 -0
  195. package/dist/http/server.d.ts +1 -0
  196. package/dist/http/server.d.ts.map +1 -1
  197. package/dist/http/server.js +41 -3
  198. package/dist/http/server.js.map +1 -1
  199. package/dist/ipc/socket-bridge.d.ts +1 -0
  200. package/dist/ipc/socket-bridge.d.ts.map +1 -1
  201. package/dist/ipc/socket-bridge.js +5 -1
  202. package/dist/ipc/socket-bridge.js.map +1 -1
  203. package/dist/jobs/bullmq-adapter.d.ts +154 -0
  204. package/dist/jobs/bullmq-adapter.d.ts.map +1 -0
  205. package/dist/jobs/bullmq-adapter.js +688 -0
  206. package/dist/jobs/bullmq-adapter.js.map +1 -0
  207. package/dist/jobs/bullmq-circuit-breaker.d.ts +133 -0
  208. package/dist/jobs/bullmq-circuit-breaker.d.ts.map +1 -0
  209. package/dist/jobs/bullmq-circuit-breaker.js +323 -0
  210. package/dist/jobs/bullmq-circuit-breaker.js.map +1 -0
  211. package/dist/jobs/bullmq-dlq-manager.d.ts +155 -0
  212. package/dist/jobs/bullmq-dlq-manager.d.ts.map +1 -0
  213. package/dist/jobs/bullmq-dlq-manager.js +325 -0
  214. package/dist/jobs/bullmq-dlq-manager.js.map +1 -0
  215. package/dist/jobs/bullmq-metrics.d.ts +104 -0
  216. package/dist/jobs/bullmq-metrics.d.ts.map +1 -0
  217. package/dist/jobs/bullmq-metrics.js +323 -0
  218. package/dist/jobs/bullmq-metrics.js.map +1 -0
  219. package/dist/jobs/bullmq-priority-service.d.ts +173 -0
  220. package/dist/jobs/bullmq-priority-service.d.ts.map +1 -0
  221. package/dist/jobs/bullmq-priority-service.js +390 -0
  222. package/dist/jobs/bullmq-priority-service.js.map +1 -0
  223. package/dist/jobs/bullmq-scheduler.d.ts +111 -0
  224. package/dist/jobs/bullmq-scheduler.d.ts.map +1 -0
  225. package/dist/jobs/bullmq-scheduler.js +300 -0
  226. package/dist/jobs/bullmq-scheduler.js.map +1 -0
  227. package/dist/jobs/bullmq-worker.d.ts +155 -0
  228. package/dist/jobs/bullmq-worker.d.ts.map +1 -0
  229. package/dist/jobs/bullmq-worker.js +651 -0
  230. package/dist/jobs/bullmq-worker.js.map +1 -0
  231. package/dist/jobs/circuit-breaker.d.ts +120 -0
  232. package/dist/jobs/circuit-breaker.d.ts.map +1 -0
  233. package/dist/jobs/circuit-breaker.js +262 -0
  234. package/dist/jobs/circuit-breaker.js.map +1 -0
  235. package/dist/jobs/index.d.ts +1 -1
  236. package/dist/jobs/index.d.ts.map +1 -1
  237. package/dist/jobs/index.js.map +1 -1
  238. package/dist/jobs/queue.d.ts +120 -1
  239. package/dist/jobs/queue.d.ts.map +1 -1
  240. package/dist/jobs/queue.js +487 -9
  241. package/dist/jobs/queue.js.map +1 -1
  242. package/dist/jobs/redis-connection.d.ts +50 -0
  243. package/dist/jobs/redis-connection.d.ts.map +1 -0
  244. package/dist/jobs/redis-connection.js +123 -0
  245. package/dist/jobs/redis-connection.js.map +1 -0
  246. package/dist/jobs/run-scheduler.js +163 -10
  247. package/dist/jobs/run-scheduler.js.map +1 -1
  248. package/dist/jobs/run-worker.js +101 -9
  249. package/dist/jobs/run-worker.js.map +1 -1
  250. package/dist/jobs/worker-thread.d.ts +6 -0
  251. package/dist/jobs/worker-thread.d.ts.map +1 -1
  252. package/dist/jobs/worker-thread.js +37 -8
  253. package/dist/jobs/worker-thread.js.map +1 -1
  254. package/dist/jobs/worker.d.ts +33 -0
  255. package/dist/jobs/worker.d.ts.map +1 -1
  256. package/dist/jobs/worker.js +358 -115
  257. package/dist/jobs/worker.js.map +1 -1
  258. package/dist/linq/async-enumerable.d.ts.map +1 -1
  259. package/dist/linq/async-enumerable.js.map +1 -1
  260. package/dist/linq/enumerable.d.ts.map +1 -1
  261. package/dist/linq/enumerable.js +10 -10
  262. package/dist/linq/enumerable.js.map +1 -1
  263. package/dist/metrics/collector.d.ts +26 -0
  264. package/dist/metrics/collector.d.ts.map +1 -0
  265. package/dist/metrics/collector.js +103 -0
  266. package/dist/metrics/collector.js.map +1 -0
  267. package/dist/polling/updates.controller.d.ts +57 -0
  268. package/dist/polling/updates.controller.d.ts.map +1 -0
  269. package/dist/polling/updates.controller.js +70 -0
  270. package/dist/polling/updates.controller.js.map +1 -0
  271. package/dist/repository/db-set.d.ts.map +1 -1
  272. package/dist/repository/db-set.js +12 -8
  273. package/dist/repository/db-set.js.map +1 -1
  274. package/dist/repository/ef-core.d.ts.map +1 -1
  275. package/dist/repository/ef-core.js +6 -6
  276. package/dist/repository/ef-core.js.map +1 -1
  277. package/dist/repository/factory.d.ts +1 -1
  278. package/dist/repository/factory.d.ts.map +1 -1
  279. package/dist/repository/factory.js.map +1 -1
  280. package/dist/repository/interfaces.d.ts.map +1 -1
  281. package/dist/repository/interfaces.js.map +1 -1
  282. package/dist/repository/queryable.d.ts.map +1 -1
  283. package/dist/repository/queryable.js.map +1 -1
  284. package/dist/rpc/adapter.d.ts.map +1 -1
  285. package/dist/rpc/adapter.js.map +1 -1
  286. package/dist/rpc/router.d.ts +2 -2
  287. package/dist/rpc/router.d.ts.map +1 -1
  288. package/dist/rpc/router.js +1 -1
  289. package/dist/rpc/router.js.map +1 -1
  290. package/dist/schema/relationship-types.d.ts +7 -2
  291. package/dist/schema/relationship-types.js +1 -1
  292. package/dist/schema/types.d.ts.map +1 -1
  293. package/dist/services/admin/app-users.service.d.ts +1 -1
  294. package/dist/services/admin/app-users.service.js +31 -38
  295. package/dist/services/admin/auth.service.d.ts +1 -1
  296. package/dist/services/admin/auth.service.js +11 -5
  297. package/dist/services/admin/backup/BackupOrchestrator.d.ts.map +1 -1
  298. package/dist/services/admin/backup/BackupOrchestrator.js +4 -7
  299. package/dist/services/admin/backup/BackupOrchestrator.js.map +1 -1
  300. package/dist/services/admin/backup/SqliteGenerator.js +8 -8
  301. package/dist/services/admin/backup/StorageStreamer.d.ts +3 -3
  302. package/dist/services/admin/backup/StorageStreamer.d.ts.map +1 -1
  303. package/dist/services/admin/backup/StorageStreamer.js +16 -55
  304. package/dist/services/admin/backup/StorageStreamer.js.map +1 -1
  305. package/dist/services/admin/backup/ZipComposer.d.ts +2 -0
  306. package/dist/services/admin/backup/ZipComposer.d.ts.map +1 -1
  307. package/dist/services/admin/backup/ZipComposer.js +23 -0
  308. package/dist/services/admin/backup/ZipComposer.js.map +1 -1
  309. package/dist/services/admin/backup.service.d.ts.map +1 -1
  310. package/dist/services/admin/backup.service.js.map +1 -1
  311. package/dist/services/admin/data.service.d.ts.map +1 -1
  312. package/dist/services/admin/data.service.js +287 -286
  313. package/dist/services/admin/data.service.js.map +1 -1
  314. package/dist/services/admin/tenants.service.d.ts.map +1 -1
  315. package/dist/services/admin/tenants.service.js.map +1 -1
  316. package/dist/services/auth.service.d.ts +2 -3
  317. package/dist/services/auth.service.js +16 -16
  318. package/dist/services/invite.service.d.ts +1 -1
  319. package/dist/services/invite.service.js +17 -15
  320. package/dist/services/storage.service.d.ts.map +1 -1
  321. package/dist/services/storage.service.js +35 -4
  322. package/dist/services/storage.service.js.map +1 -1
  323. package/dist/services/system.service.d.ts.map +1 -1
  324. package/dist/services/system.service.js +1 -1
  325. package/dist/services/system.service.js.map +1 -1
  326. package/dist/services/tenant.service.d.ts +1 -1
  327. package/dist/services/tenant.service.js +43 -31
  328. package/dist/sse/subscriptions.controller.d.ts +57 -0
  329. package/dist/sse/subscriptions.controller.d.ts.map +1 -0
  330. package/dist/sse/subscriptions.controller.js +127 -0
  331. package/dist/sse/subscriptions.controller.js.map +1 -0
  332. package/dist/startup/bootstrap.d.ts +13 -2
  333. package/dist/startup/bootstrap.d.ts.map +1 -1
  334. package/dist/startup/bootstrap.js +85 -13
  335. package/dist/startup/bootstrap.js.map +1 -1
  336. package/dist/storage/s3-backend.d.ts.map +1 -1
  337. package/dist/storage/s3-backend.js +3 -3
  338. package/dist/storage/s3-backend.js.map +1 -1
  339. package/dist/websocket/server.d.ts.map +1 -1
  340. package/dist/websocket/server.js +14 -3
  341. package/dist/websocket/server.js.map +1 -1
  342. package/docker/README.md +309 -11
  343. package/package.json +214 -210
  344. package/templates/.env.example +115 -55
  345. package/templates/archlast.config.js +51 -37
  346. package/templates/docker-compose.prod.yml +32 -15
  347. package/templates/docker-compose.yml +117 -33
@@ -11,50 +11,385 @@ const socket_bridge_js_1 = require("../ipc/socket-bridge.js");
11
11
  const logger_js_1 = require("../logging/logger.js");
12
12
  const store_js_1 = require("./store.js");
13
13
  Object.defineProperty(exports, "estimateSize", { enumerable: true, get: function () { return store_js_1.estimateSize; } });
14
+ const redis_adapter_js_1 = require("./redis-adapter.js");
15
+ const invalidation_queue_js_1 = require("./invalidation-queue.js");
14
16
  class CacheSidecarServer {
15
17
  server;
16
18
  cache;
17
19
  socketPath;
18
- constructor(socketPath) {
20
+ redis;
21
+ invalidationRetryQueue;
22
+ // L2→L1 Promotion tracking
23
+ l2AccessLog = new Map();
24
+ recentlyDemoted = new Map(); // key -> demotion timestamp
25
+ cleanupInterval = null;
26
+ PROMOTION_THRESHOLD = 3; // Access count threshold
27
+ PROMOTION_WINDOW_MS = 5 * 60 * 1000; // 5 minutes
28
+ DEMOTION_COOLDOWN_MS = 60 * 1000; // 60 seconds
29
+ MIN_TTL_REMAINING_MS = 30 * 1000; // 30 seconds minimum TTL
30
+ CLEANUP_INTERVAL_MS = 60 * 1000; // Cleanup every 60 seconds
31
+ constructor(socketPath, redisConfig) {
19
32
  this.socketPath = socketPath;
20
33
  this.server = new socket_bridge_js_1.IpcServer(socketPath);
21
34
  this.cache = new store_js_1.CacheStore();
35
+ // Initialize Redis L2 adapter with invalidation callback
36
+ if (redisConfig?.enabled) {
37
+ this.redis = new redis_adapter_js_1.RedisCacheAdapter({
38
+ ...redisConfig,
39
+ onInvalidate: (keys, pattern) => {
40
+ // Invalidate L1 cache when pub/sub message received
41
+ if (pattern) {
42
+ const partitionPattern = pattern.split(":", 2)[1] || "*";
43
+ const partition = pattern.split(":", 1)[0];
44
+ if (partition && partitionPattern) {
45
+ this.cache.invalidatePattern(partitionPattern, partition);
46
+ }
47
+ }
48
+ else {
49
+ this.cache.invalidate(keys);
50
+ }
51
+ // Forward to local subscribers
52
+ this.server.publish("cache:invalidation", { keys, pattern });
53
+ },
54
+ });
55
+ }
56
+ else {
57
+ this.redis = new redis_adapter_js_1.RedisCacheAdapter({
58
+ enabled: false,
59
+ host: "localhost",
60
+ port: 6379,
61
+ db: 0,
62
+ ttlMultiplier: 2,
63
+ });
64
+ }
65
+ // Initialize invalidation retry queue for failed publish operations
66
+ this.invalidationRetryQueue = new invalidation_queue_js_1.InvalidationRetryQueue((keys, pattern) => this.redis.publishInvalidation(keys, pattern));
67
+ // Set up L1→L2 promotion on LRU eviction
68
+ this.setupL1EvictionHandlers();
22
69
  this.registerHandlers();
70
+ this.startCleanupInterval();
71
+ }
72
+ /**
73
+ * Start periodic cleanup of old access and demotion records
74
+ */
75
+ startCleanupInterval() {
76
+ this.cleanupInterval = setInterval(() => {
77
+ this.cleanupOldRecords();
78
+ }, this.CLEANUP_INTERVAL_MS);
79
+ // Prevent interval from keeping process alive
80
+ if (this.cleanupInterval.unref) {
81
+ this.cleanupInterval.unref();
82
+ }
83
+ }
84
+ /**
85
+ * Stop periodic cleanup interval
86
+ */
87
+ stopCleanupInterval() {
88
+ if (this.cleanupInterval) {
89
+ clearInterval(this.cleanupInterval);
90
+ this.cleanupInterval = null;
91
+ }
92
+ }
93
+ /**
94
+ * Cleanup old access records and demotion records
95
+ */
96
+ cleanupOldRecords() {
97
+ const now = Date.now();
98
+ let cleanedAccess = 0;
99
+ let cleanedDemotions = 0;
100
+ // Clean old access records (outside 5-minute window)
101
+ for (const [key, record] of this.l2AccessLog.entries()) {
102
+ if (now - record.lastAccess > this.PROMOTION_WINDOW_MS) {
103
+ this.l2AccessLog.delete(key);
104
+ cleanedAccess++;
105
+ }
106
+ }
107
+ // Clean old demotion records (outside 60-second cooldown)
108
+ for (const [key, timestamp] of this.recentlyDemoted.entries()) {
109
+ if (now - timestamp > this.DEMOTION_COOLDOWN_MS) {
110
+ this.recentlyDemoted.delete(key);
111
+ cleanedDemotions++;
112
+ }
113
+ }
114
+ if (cleanedAccess > 0 || cleanedDemotions > 0) {
115
+ console.log(`[Cache] Cleanup: removed ${cleanedAccess} access records, ${cleanedDemotions} demotion records`);
116
+ }
117
+ }
118
+ /**
119
+ * Get partition for a key based on key prefix/pattern
120
+ * Keys are namespaced as "partition:key"
121
+ */
122
+ getPartitionForKey(namespacedKey) {
123
+ const partition = namespacedKey.split(":")[0];
124
+ if (["query", "function", "document", "aggregate"].includes(partition)) {
125
+ return partition;
126
+ }
127
+ return null;
128
+ }
129
+ /**
130
+ * Record L2 access and determine if entry should be promoted to L1
131
+ */
132
+ recordL2AccessAndCheckPromotion(key) {
133
+ const now = Date.now();
134
+ const record = this.l2AccessLog.get(key);
135
+ if (!record) {
136
+ // First access - create new record
137
+ this.l2AccessLog.set(key, {
138
+ count: 1,
139
+ firstAccess: now,
140
+ lastAccess: now,
141
+ });
142
+ return false; // Not enough accesses yet
143
+ }
144
+ // Check if outside promotion window - reset if so
145
+ if (now - record.firstAccess > this.PROMOTION_WINDOW_MS) {
146
+ this.l2AccessLog.set(key, {
147
+ count: 1,
148
+ firstAccess: now,
149
+ lastAccess: now,
150
+ });
151
+ return false;
152
+ }
153
+ // Increment access count
154
+ record.count++;
155
+ record.lastAccess = now;
156
+ // Check minimum access threshold
157
+ if (record.count < this.PROMOTION_THRESHOLD) {
158
+ return false;
159
+ }
160
+ // Check demotion cooldown (prevent thrashing)
161
+ const demotedAt = this.recentlyDemoted.get(key);
162
+ if (demotedAt && now - demotedAt < this.DEMOTION_COOLDOWN_MS) {
163
+ const remainingCooldown = Math.ceil((this.DEMOTION_COOLDOWN_MS - (now - demotedAt)) / 1000);
164
+ console.log(`[Cache] Skipping promotion (recently demoted, cooldown: ${remainingCooldown}s): ${key}`);
165
+ return false;
166
+ }
167
+ return true; // Passed all checks, should check remaining criteria
168
+ }
169
+ /**
170
+ * Check if L1 partition has space for new entry
171
+ */
172
+ hasSpaceInPartition(partition) {
173
+ const stats = this.cache.getStats()[partition];
174
+ // Allow promotion if under 90% capacity to avoid immediate eviction
175
+ const maxEntries = stats.maxEntries;
176
+ if (maxEntries > 0) {
177
+ return stats.entries < maxEntries * 0.9;
178
+ }
179
+ // Fall back to byte-based check
180
+ return stats.size < stats.maxBytes * 0.9;
181
+ }
182
+ /**
183
+ * Get access count for a key
184
+ */
185
+ getAccessCount(key) {
186
+ return this.l2AccessLog.get(key)?.count || 0;
187
+ }
188
+ /**
189
+ * Mark a key as recently demoted to prevent immediate re-promotion
190
+ */
191
+ onL1Eviction(key) {
192
+ this.recentlyDemoted.set(key, Date.now());
193
+ }
194
+ /**
195
+ * Set up L1→L2 promotion handlers on LRU eviction
196
+ * When an entry is evicted from L1 due to space constraints,
197
+ * write it to L2 Redis before it's lost
198
+ */
199
+ setupL1EvictionHandlers() {
200
+ const partitions = [
201
+ "query",
202
+ "function",
203
+ "document",
204
+ "aggregate",
205
+ ];
206
+ partitions.forEach((partitionName) => {
207
+ const partition = this.cache.getPartition(partitionName);
208
+ partition.setEvictionCallback((key, value, remainingTtl) => {
209
+ const namespacedKey = `${partitionName}:${key}`;
210
+ // Only promote if there's significant TTL remaining (> 60 seconds)
211
+ // This prevents writing already-expired or near-expired entries
212
+ const MIN_PROMOTION_TTL_MS = 60 * 1000; // 1 minute
213
+ if (remainingTtl <= MIN_PROMOTION_TTL_MS) {
214
+ logger_js_1.logger.log({
215
+ timestamp: Date.now(),
216
+ level: "debug",
217
+ kind: "cache",
218
+ message: `[Cache] L1 eviction skipped (low TTL ${remainingTtl}ms): ${namespacedKey}`,
219
+ });
220
+ return;
221
+ }
222
+ // Mark as recently demoted to prevent immediate re-promotion
223
+ this.onL1Eviction(namespacedKey);
224
+ // Write to L2 before entry is lost from L1 (fire-and-forget, don't block eviction)
225
+ // Use extended TTL to account for the fact that it was recently accessed
226
+ // Multiply by 1.5 to extend lifetime since it was recently used in L1
227
+ const extendedTtl = Math.ceil(remainingTtl * 1.5);
228
+ // Fire-and-forget: don't await, don't block L1 eviction
229
+ this.redis
230
+ .set(namespacedKey, value, extendedTtl)
231
+ .then(() => {
232
+ logger_js_1.logger.log({
233
+ timestamp: Date.now(),
234
+ level: "info",
235
+ kind: "cache",
236
+ message: `[Cache] Promoted L1→L2 on eviction: ${namespacedKey} ` +
237
+ `(TTL: ${remainingTtl}ms → ${extendedTtl}ms)`,
238
+ });
239
+ })
240
+ .catch((error) => {
241
+ logger_js_1.logger.log({
242
+ timestamp: Date.now(),
243
+ level: "warn",
244
+ kind: "cache",
245
+ message: `[Cache] Failed to promote L1→L2: ${namespacedKey} - ${error}`,
246
+ });
247
+ // Entry will be lost, but that's acceptable - it's cache data
248
+ });
249
+ });
250
+ });
251
+ logger_js_1.logger.log({
252
+ timestamp: Date.now(),
253
+ level: "info",
254
+ kind: "cache",
255
+ message: `[Cache] L1→L2 eviction handlers configured for ${partitions.length} partitions`,
256
+ });
23
257
  }
24
258
  registerHandlers() {
25
259
  // Register Cache Handlers (moved from ipc/run-sidecar.ts)
26
- this.server.handle("CACHE_GET", (payload) => {
27
- const value = this.cache.get(payload.key, payload.partition);
28
- return {
29
- value,
30
- hit: value !== null,
31
- };
260
+ this.server.handle("CACHE_GET", async (payload) => {
261
+ const { key, partition, ttl } = payload;
262
+ const namespacedKey = `${partition}:${key}`;
263
+ // L1: Check sidecar cache
264
+ const l1Value = this.cache.get(key, partition);
265
+ if (l1Value !== null) {
266
+ return { value: l1Value, hit: true, source: "l1" };
267
+ }
268
+ // L2: Check Redis
269
+ const l2Value = await this.redis.get(namespacedKey);
270
+ if (l2Value !== null) {
271
+ // Record L2 access and check if should promote to L1
272
+ const shouldPromote = this.recordL2AccessAndCheckPromotion(namespacedKey);
273
+ if (shouldPromote) {
274
+ // Check additional promotion criteria
275
+ const hasSpace = this.hasSpaceInPartition(partition);
276
+ const ttlRemaining = await this.redis.getTtl(namespacedKey);
277
+ const hasSignificantTtl = ttlRemaining === null || ttlRemaining > this.MIN_TTL_REMAINING_MS;
278
+ if (hasSpace && hasSignificantTtl) {
279
+ // Promote to L1
280
+ const size = (0, store_js_1.estimateSize)(l2Value);
281
+ const l1Ttl = ttl || 300000; // Default 5 minutes if no TTL specified
282
+ this.cache.set(key, l2Value, partition, size, l1Ttl);
283
+ const accessCount = this.getAccessCount(namespacedKey);
284
+ console.log(`[Cache] Promoted L2→L1: ${namespacedKey} ` +
285
+ `(access count: ${accessCount}, TTL: ${ttlRemaining ? Math.round(ttlRemaining / 1000) + "s" : "none"})`);
286
+ return { value: l2Value, hit: true, source: "l2-promoted" };
287
+ }
288
+ else {
289
+ // Log why promotion was skipped
290
+ const reasons = [];
291
+ if (!hasSpace)
292
+ reasons.push("L1 full");
293
+ if (!hasSignificantTtl)
294
+ reasons.push(`low TTL (${Math.round((ttlRemaining || 0) / 1000)}s)`);
295
+ console.log(`[Cache] L2 hit (no promotion): ${namespacedKey} ` +
296
+ `(access count: ${this.getAccessCount(namespacedKey)}, reasons: ${reasons.join(", ")})`);
297
+ return { value: l2Value, hit: true, source: "l2" };
298
+ }
299
+ }
300
+ else {
301
+ // Not hot enough for promotion
302
+ console.log(`[Cache] L2 hit (no promotion): ${namespacedKey} ` +
303
+ `(access count: ${this.getAccessCount(namespacedKey)}/${this.PROMOTION_THRESHOLD})`);
304
+ return { value: l2Value, hit: true, source: "l2" };
305
+ }
306
+ }
307
+ return { value: null, hit: false, source: "miss" };
32
308
  });
33
- this.server.handle("CACHE_SET", (payload) => {
34
- const size = payload.size || (0, store_js_1.estimateSize)(payload.value);
35
- this.cache.set(payload.key, payload.value, payload.partition, size, payload.ttl);
309
+ this.server.handle("CACHE_SET", async (payload) => {
310
+ const { key, value, partition, size, ttl } = payload;
311
+ const namespacedKey = `${partition}:${key}`;
312
+ const entrySize = size || (0, store_js_1.estimateSize)(value);
313
+ // L1: Store in sidecar cache
314
+ this.cache.set(key, value, partition, entrySize, ttl);
315
+ // L2: Store in Redis (async, don't await)
316
+ this.redis.set(namespacedKey, value, ttl || 300).catch((err) => {
317
+ console.warn("Redis L2 write failed:", err);
318
+ });
36
319
  return { success: true };
37
320
  });
38
- this.server.handle("CACHE_DELETE", (payload) => {
39
- const deleted = this.cache.delete(payload.key, payload.partition);
321
+ this.server.handle("CACHE_DELETE", async (payload) => {
322
+ const { key, partition } = payload;
323
+ const namespacedKey = `${partition}:${key}`;
324
+ // L1: Delete from sidecar
325
+ const deleted = this.cache.delete(key, partition);
326
+ // L2: Delete from Redis (async, don't await)
327
+ this.redis.delete(namespacedKey).catch((err) => {
328
+ console.warn("Redis L2 delete failed:", err);
329
+ });
40
330
  return { deleted };
41
331
  });
42
- this.server.handle("CACHE_INVALIDATE", (payload) => {
332
+ this.server.handle("CACHE_INVALIDATE", async (payload) => {
43
333
  if (!Array.isArray(payload.keys)) {
44
334
  throw new Error("Invalid keys: must be an array");
45
335
  }
336
+ // SYNC: L1 invalidation (fast, synchronous)
46
337
  const invalidated = this.cache.invalidate(payload.keys);
47
- // Publish invalidation event to all subscribers
48
- if (invalidated.length > 0) {
49
- this.server.publish("cache:invalidation", { keys: invalidated });
338
+ // SYNC: Notify local subscribers immediately (before async Redis ops)
339
+ if (invalidated.length > 0 || payload.pattern) {
340
+ this.server.publish("cache:invalidation", {
341
+ keys: invalidated,
342
+ pattern: payload.pattern,
343
+ });
344
+ // ASYNC (fire-and-forget): Publish to Redis pub/sub
345
+ this.redis
346
+ .publishInvalidation(invalidated, payload.pattern)
347
+ .then(() => {
348
+ console.log(`[Cache] Invalidation published: ${invalidated.length} keys` +
349
+ (payload.pattern ? `, pattern: ${payload.pattern}` : ""));
350
+ })
351
+ .catch((err) => {
352
+ logger_js_1.logger.log({
353
+ timestamp: Date.now(),
354
+ level: "warn",
355
+ kind: "cache",
356
+ message: `Redis pub/sub publish failed, enqueuing for retry: ${err}`,
357
+ });
358
+ this.invalidationRetryQueue.enqueue(invalidated, payload.pattern);
359
+ });
50
360
  }
51
361
  return { invalidated };
52
362
  });
53
- this.server.handle("CACHE_INVALIDATE_PATTERN", (payload) => {
363
+ this.server.handle("CACHE_INVALIDATE_PATTERN", async (payload) => {
364
+ // SYNC: L1 invalidation (fast, synchronous - prioritized)
54
365
  const invalidated = this.cache.invalidatePattern(payload.pattern, payload.partition);
55
- // Publish invalidation event
56
- if (invalidated.length > 0) {
57
- this.server.publish("cache:invalidation", { keys: invalidated });
366
+ // Always publish pattern invalidations for cross-instance coordination,
367
+ // even if no keys were found in local L1 cache
368
+ if (invalidated.length > 0 || payload.pattern) {
369
+ // SYNC: Notify local subscribers immediately (before async Redis ops)
370
+ this.server.publish("cache:invalidation", {
371
+ keys: invalidated,
372
+ pattern: payload.pattern,
373
+ });
374
+ // ASYNC (fire-and-forget): Delete matching keys from Redis (non-blocking)
375
+ this.redis.invalidatePattern(payload.pattern).catch((err) => {
376
+ console.warn("Redis L2 pattern invalidation failed:", err);
377
+ });
378
+ // ASYNC (fire-and-forget): Publish to Redis pub/sub for cross-instance coordination
379
+ this.redis
380
+ .publishInvalidation(invalidated, payload.pattern)
381
+ .then(() => {
382
+ console.log(`[Cache] Pattern invalidation published: ${invalidated.length} keys, pattern: ${payload.pattern}`);
383
+ })
384
+ .catch((err) => {
385
+ logger_js_1.logger.log({
386
+ timestamp: Date.now(),
387
+ level: "warn",
388
+ kind: "cache",
389
+ message: `Redis pub/sub pattern publish failed, enqueuing for retry: ${err}`,
390
+ });
391
+ this.invalidationRetryQueue.enqueue(invalidated, payload.pattern);
392
+ });
58
393
  }
59
394
  return { invalidated };
60
395
  });
@@ -66,8 +401,13 @@ class CacheSidecarServer {
66
401
  this.cache.clear(payload.partition);
67
402
  return { success: true };
68
403
  });
69
- this.server.handle("CACHE_STATS", () => {
70
- return this.cache.getStats();
404
+ this.server.handle("CACHE_STATS", async () => {
405
+ const l1Stats = this.cache.getStats();
406
+ const l2Stats = await this.redis.getStats();
407
+ return {
408
+ ...l1Stats,
409
+ redis: l2Stats || undefined,
410
+ };
71
411
  });
72
412
  this.server.handle("PING", () => {
73
413
  return { pong: true };
@@ -75,6 +415,8 @@ class CacheSidecarServer {
75
415
  }
76
416
  async start() {
77
417
  await this.server.listen();
418
+ // Start the invalidation retry queue for background processing
419
+ this.invalidationRetryQueue.start();
78
420
  logger_js_1.logger.log({
79
421
  timestamp: Date.now(),
80
422
  level: "info",
@@ -83,6 +425,10 @@ class CacheSidecarServer {
83
425
  });
84
426
  }
85
427
  async stop() {
428
+ // Stop the cleanup interval for access/demotion records
429
+ this.stopCleanupInterval();
430
+ // Stop the invalidation retry queue
431
+ this.invalidationRetryQueue.stop();
86
432
  await this.server.stop();
87
433
  }
88
434
  }
@@ -1 +1 @@
1
- {"version":3,"file":"sidecar-server.js","sourceRoot":"","sources":["../../src/cache/sidecar-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sidecar-server.js","sourceRoot":"","sources":["../../src/cache/sidecar-server.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,44 @@ export interface CacheStats {
19
19
  entries: number;
20
20
  hits: number;
21
21
  misses: number;
22
+ evictions: number;
23
+ writes: number;
24
+ deletes: number;
25
+ }
26
+ /**
27
+ * Eviction callback type for L1→L2 promotion
28
+ */
29
+ export type EvictionCallback = (key: string, value: any, remainingTtl: number) => void | Promise<void>;
30
+ /**
31
+ * LRU Cache Partition
32
+ */
33
+ declare class CachePartition {
34
+ entries: Map<string, CacheEntry>;
35
+ private maxBytes;
36
+ private maxEntries;
37
+ private currentSize;
38
+ private hits;
39
+ private misses;
40
+ private evictions;
41
+ private writes;
42
+ private deletes;
43
+ private onEvict?;
44
+ constructor(maxBytes?: number, maxEntries?: number);
45
+ /**
46
+ * Set eviction callback for L1→L2 promotion
47
+ * Called BEFORE entry is removed from L1 cache
48
+ */
49
+ setEvictionCallback(callback: EvictionCallback): void;
50
+ /**
51
+ * Calculate remaining TTL for an entry
52
+ */
53
+ private calculateRemainingTtl;
54
+ get(key: string): any | null;
55
+ set(key: string, value: any, size: number, ttl?: number): void;
56
+ delete(key: string): boolean;
57
+ clear(): void;
58
+ getStats(): CacheStats;
59
+ private evictLRU;
22
60
  }
23
61
  /**
24
62
  * Main Cache Store
@@ -33,6 +71,10 @@ export declare class CacheStore {
33
71
  private dependencyMap;
34
72
  private startTime;
35
73
  constructor(queryCacheSize?: number, functionCacheSize?: number, documentCacheSize?: number, aggregateCacheSize?: number, queryCacheEntries?: number, functionCacheEntries?: number, documentCacheEntries?: number, aggregateCacheEntries?: number);
74
+ /**
75
+ * Get a cache partition by name
76
+ */
77
+ getPartition(partition: "query" | "function" | "document" | "aggregate"): CachePartition;
36
78
  /**
37
79
  * Get value from cache
38
80
  */
@@ -87,4 +129,5 @@ export declare class CacheStore {
87
129
  * Estimate size of a value in bytes
88
130
  */
89
131
  export declare function estimateSize(value: any): number;
132
+ export {};
90
133
  //# sourceMappingURL=store.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,MAAM,WAAW,UAAU;IACvB,KAAK,EAAE,GAAG,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAEhB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAClB;AA0HD;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,aAAa,CAAiB;IACtC,OAAO,CAAC,cAAc,CAAiB;IACvC,OAAO,CAAC,aAAa,CAAuC;IAC5D,OAAO,CAAC,SAAS,CAAsB;gBAGnC,cAAc,GAAE,MAAyB,EACzC,iBAAiB,GAAE,MAAyB,EAC5C,iBAAiB,GAAE,MAAyB,EAC5C,kBAAkB,GAAE,MAAyB,EAE7C,iBAAiB,GAAE,MAAa,EAChC,oBAAoB,GAAE,MAAa,EACnC,oBAAoB,GAAE,MAAa,EACnC,qBAAqB,GAAE,MAAY;IAQvC;;OAEG;IACH,GAAG,CACC,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAqB,GACrE,GAAG,GAAG,IAAI;IAoBb;;OAEG;IACH,GAAG,CACC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,GAAG,EACV,SAAS,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,YAAU,EACpE,IAAI,EAAE,MAAM,EACZ,GAAG,CAAC,EAAE,MAAM,GACb,IAAI;IAoBP;;OAEG;IACH,MAAM,CACF,GAAG,EAAE,MAAM,EACX,SAAS,GAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAqB,GACrE,OAAO;IAoBV;;OAEG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE;IA2BpC;;OAEG;IACH,iBAAiB,CACb,OAAO,EAAE,MAAM,EACf,SAAS,GAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAqB,GACrE,MAAM,EAAE;IAmCX;;OAEG;IACH,aAAa,CAAC,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI;IAO5D;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,WAAW,GAAG,IAAI;IA4BxE;;OAEG;IACH,QAAQ,IAAI;QACR,KAAK,EAAE,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QACxC,QAAQ,EAAE,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,QAAQ,EAAE,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC3C,SAAS,EAAE,UAAU,GAAG;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAC5C,YAAY,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAC;QAClC,MAAM,EAAE,MAAM,CAAC;KAClB;CAyCJ;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,GAAG,GAAG,MAAM,CAoB/C"}
1
+ {"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../src/cache/store.ts"],"names":[],"mappings":"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"}